How to compile cshtml before runtime

I believe I read somewhere there is a setting in one of the project files that will allow you to compile the .cshtml files when building your Visual Studio project.

Just getting started with MVC/Razor/Query Mobile, and am getting annoyed with the "Error loading page" when I have an error in a code block inside a .cshtml file


Solution 1:

Set <MvcBuildViews>true</MvcBuildViews> in the <PropertyGroup> element of your .csproj file.

Solution 2:

Besides the true setting, you still need to ensure below setting is active in your csproj:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

Solution 3:

MvcBuildViews is often mistakenly, as it doesn’t precompile views in the terms you'd like.

MvcBuildViews builds views temporarily and gives build results back to building process to show possible build error in VS errors window.

For achieving a real precompilation of views for production release, you have to properly set specific values in the Publish Web App configuration window of your project.

See here for the main article about how to do it, and here for going deeper on how to do it via msBuild and Azure.