9

I've just started using a cms (N2) which has a template basic implementation using a web site project template in vs2008. I've noticed that when compiling it it takes a lot longer than using a web application project which I am more use to.

My questions are:

  1. Why does it seem to take a lot longer to compile?
  2. Which is better to use?
  3. Should I convert it into being a web application?

I apologise if this is a duplicate but I couldn't find a similar question.

Cheers

3

3 Answers 3

10

The Major differences are:

In a Web Application project everything is pre-compiled all the codebehind pages will be compiled into a .dll ---- In a Web Site Project nothing in the project is pre-compiled, the compiler will compile everything to ensure it is valid but none of the compiled pages are uploaded. When a user first attempts to access the site each page is compiled into its own dll. This means in a Web Site Project you are able to upload a single codebehind file.

Namespaces - In a Web Application project namespaces are created by default in a Web Site Project they are not.

Project files - A Website Project does not have a "cproj" file a Web Application project does.

Converting to a Web Application project can be more difficult then you think especially if you rely heavily the appcode folder.

I personally prefer a Web Application projects I find them easier to use and less annoying to deploy. I would personally only use web site project on something very small and simple.

Extra reading from MSDN

Sign up to request clarification or add additional context in comments.

4 Comments

You can compile a Web Site Project as well so that all code behind and App_Code gets compiled into dlls and all the aspx pages are just stubs. They do not however get compiled into a single dll like a web application does.
Yes you can but, and I may be wrong, you need to use msbuild and you are only trading the page .cs file for page.dll. I dont think it gains you much other then quicker first time startup
+1 Thanks for the summary :-) I'm with you on the preferring the web application project route. The decision now is to convert now or later ;-)
Actually you can get all your compiled code into one dll by using the aspnet_merge.exe command. This is an old article about managing your dll's with using the aspnet compiler, but its still just as relevant: msdn.microsoft.com/en-us/library/aa479044.aspx
1

In addition to the info provided by Chris, you should also note that for Web Application Projects, Profiles are not available out of the box:

http://www.codersbarn.com/post/2008/06/01/ASPNET-Web-Site-versus-Web-Application-Project.aspx

There is a workaround available here: http://code.msdn.microsoft.com/WebProfileBuilder

Basically, the Web Application Project does not have the Profile object automatically added to each page as with the Web Site project, so we cannot get strongly-typed programmatic access to the profile properties defined in our web.config file.

Anthony :-)

2 Comments

+1 thanks for this, I didn't know about this as I've not used it before :-)
No prob. I'm actually planning to tinker around with N2 myself but wasn't aware that it was based on a website project :-)
1

My preference is to use Website project over web application. I mainly rely on "View in Browser" to execute the page during development and not f5. I can leave the browser window open and modify code without closing the runtime browser. Usually if I need to debug I attach the IDE to the appropriate process. In my experience it much more efficient to do it this way instead of compile and restarting the app everytime I have to compile or make changes. This is magnified even more if the app has a login page. Need for logging in is avoided everytime F5 is pressed - granted there are ways to set it up. But preference is not to.

1 Comment

+1 Valid point and I use that on the websites that I work on. Interestingly enough this is also how you can work with asp.net mvc application projects; build > hit refresh, no f5 in the IDE required. It does just depend on what you are writing and what you are trying to achieve :-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.