在ASP.NET MVC中编译视图

我想要一个msbuild任务来编译的意见,所以我可以看到是否有编译时错误,以及编译时间。 有任何想法吗?

坦率地说,我会推荐RazorGenerator nuget包。 这样,你的视图有一个.designer.cs文件,当你保存它们,并且为你的视图获取编译时错误时,它们也被预编译进程序集(=更快的预热),Resharper也提供了一些额外的帮助。

为了使用它,在你的ASP.NET MVC项目中包含RazorGenerator nuget包,并在工具 – >扩展和更新下的项目下安装“Razor Generator”扩展

我们使用这个方法,每个编译的开销less得多。 最重要的是,我可能会推荐使用RedGate的.NET Demon,这大大减less了编译时间的影响。

希望这可以帮助。

从RC1的自述word文档(不是由谷歌索引)

ASP.NET编译器后生成步骤

目前,视图文件中的错误直到运行时才被检测到。 为了让您在编译时检测到这些错误,ASP.NET MVC项目现在包含一个默认禁用的MvcBuildViews属性。 要启用此属性,请打开项目文件并将MvcBuildViews属性设置为true,如下例所示:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup> 

注意启用此function会增加构build时间的一些开销。

您可以通过执行以下步骤来更新使用以前版本的MVC创build的项目,以包含视图的构build时validation:

  1. 在文本编辑器中打开项目文件。
  2. 在最上面的<PropertyGroup>元素下添加以下元素: <MvcBuildViews>true</MvcBuildViews>
  3. 在项目文件的结尾,取消<Target Name="AfterBuild">元素的注释并修改它以匹配以下内容:
 <Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" /> </Target> 

你可以使用aspnet_compiler来做到这一点:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v /Virtual/Application/Path/Or/Path/In/IIS/Metabase -p C:\Path\To\Your\WebProject -f -errorstack C:\Where\To\Put\Compiled\Site

/ MyApp ”或“ / lm / w3svc2 / 1 / root / ”的位置,

此外,还有MSDN上的AspNetCompiler任务 ,展示了如何将aspnet_compiler与MSBuild集成:

 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="PrecompileWeb"> <AspNetCompiler VirtualPath="/MyWebSite" PhysicalPath="c:\inetpub\wwwroot\MyWebSite\" TargetPath="c:\precompiledweb\MyWebSite\" Force="true" Debug="true" /> </Target> </Project> 

此外,如果您使用Resharper,您可以激活解决scheme宽分析,它将检测您可能在aspx文件中的任何编译器错误。 那是我们做的…

我不知道你使用的是什么viewengine,但如果你使用Razor,你可能想看看我的博客文章: 编译你的asp.net mvc Razor视图到一个单独的dll

应该可以使用该代码的其他viewengines,但还没有做过testing

ASP.NET MVC的下一个版本(在1月左右可用)应该有编译视图的MSBuild任务,所以你可能要等待。

见公告

这里给出的答案适用于某些MVC版本,但不适用于其他版本。

简单的解决scheme为MVC1工作,但升级到MVC2的意见不再compliled。 这是由于网站项目文件中的错误。 看到这个Haacked的文章。

看到这个: http : //haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

生成>运行代码分析

快捷键: Alt + F11

帮助我抓住剃刀错误。

使用Visual Studio的生产力电动工具免费 )扩展有点帮助 。 具体来说, Solution Error Visualizerfunction。 有了它,在解决scheme资源pipe理器中(在发现错误的源文件中)以可视方式标记编译错误。 但是,出于某种原因,这个function在代码中的其他地方不起作用。

在MVC视图中,任何编译时错误仍然会在各自的.cs文件中以红色标出,但在解决scheme资源pipe理器中不会传播这些错误(绝不会在包含的源文件中)。

感谢BlueClouds纠正我以前的陈述。

我刚刚报告这是扩展的github项目的一个问题 。