Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

You know that C# is a compiled language. But when we develop web applications we use ASP.NET + C#, in this case can we say that ASP.NET is compiled?

If ASP.NET is not compiled does it affect the performance of C# when ASP.NET and C# works beside each other to develop web applications?

share|improve this question
Yes, ASP.NET is compiled. If you're developing in Visual Studio, don't forget to turn off debug mode when publishing which will increase performance. – Peter Smith Jun 16 '11 at 17:07
Very confused by your question. You first state that you know that C# is a compiled language. Doesn't that answer your own question from the get go? – Charles Boyung Jun 30 '11 at 1:40

Yes, ASP.NET application is being compiled into IL and run with that. Compilation either occurs at first request (that's why first request tends to take longer time than subsequent request) or can be pre-compiled at deploy.

See, for instance,

share|improve this answer

If you utilize ASP.NET precompilation of your ASPX/ASCX files, then yes: we can say that the application is compiled.

However, if ASP.NET precompilation is not used, then there will be a performance hit when the page is loaded for the first time because ASP.NET will have to compile it on the fly. As well, the lack of precompilation means that you may not catch an error in the mark-up until a specific component of the web app is called.

For maximum performance and early detection of errors, you should always precompile ASP.NET web applications.

There are components in the mark-up that bind at runtime (rather than at compile time), such as ObjectDataSource controls, but this is no different from writing C# code to perform reflection.

The compiled result is going to be only as statically verifiable as your code (or the ASP.NET framework) uses the features of the type system. Code that breaks the type system (e.g. via late binding with reflection) will run slower and introduce errors that the compiler cannot catch.

share|improve this answer
i don't remember the specific example, but i was recently kind of surprised when I realized it was possible to inject server side tags into the markup of a page from code running early on in the lifecycle – Aaron Anodide Jun 5 '12 at 23:40

I assume that you are referring to the contents of the actual .aspx page containing the markup?

The .aspx page is not directly compiled. Instead, at runtime the ASP.NET engine generates C# code based on this file, places it in a folder called, "Temporary ASP.NET Files", and then compiles that C# code. So yes, it is compiled.

There is a bit about it in this post:

You can also enable precompilation to make this compilation already at compile time. But it is still being compiled if you don't enable precompilation. It is just being compiled much later.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.