我想要一个msbuild任务来编译视图,这样我就可以看到是否有编译时错误在好…编译时间。什么好主意吗?
你可以使用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
其中“/虚拟/应用程序/道路/或/道路/ / IIS / Metabase”是这样的:“/ MyApp”或“/ / lm / w3svc2/1 /根”
MSDN上还有AspNetCompiler Task . AspNetCompiler Task,展示了如何将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>
ASP的下一个版本。NET MVC(一月左右可用)应该有编译视图的MSBuild任务,所以您可能想要等待。
看到# EYZ0
此外,如果你使用Resharper,你可以激活Solution Wide Analysis,它将检测你在aspx文件中可能存在的任何编译器错误。这就是我们所做的……
从RC1的自述词doc(未被谷歌索引)
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>
启用这个特性会增加一些构建时间的开销。
您可以通过执行以下步骤更新使用以前版本的MVC创建的项目,以包括视图的构建时验证:
<PropertyGroup>
<Target Name="AfterBuild">
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" /> </Target>
这里给出的答案适用于某些MVC版本,但不适用于其他版本。
简单的解决方案适用于MVC1,但在升级到MVC2时,视图不再被编译。这是由于网站项目文件中的一个错误。请看这篇黑客文章。
看这个:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
坦白地说,我会推荐RazorGenerator金块套装。这样的话,你的视图有一个.designer.cs文件生成,当你保存它们和顶部获得编译时错误的视图,他们也预编译到程序集(=更快的预热)和Resharper提供了一些额外的帮助以及。
.designer.cs
要使用此功能,请在ASP中包含RazorGenerator nuget包。并在工具→扩展和更新下的项目下安装“剃须刀发电机”扩展。
我们使用这种方法,每次编译的开销要少得多。在此基础上,我可能会推荐.NET Demon by RedGate,它进一步大大减少了编译时的影响。
希望这能有所帮助。
使用Visual Studio的生产力电动工具 (免费的)扩展有点帮助。特别是Solution Error Visualizer特性。使用它,在解决方案资源管理器中(在发现错误的源文件中)可视地标记编译错误。但是,由于某种原因,该特性不能像处理代码中的其他错误一样正常工作。
Solution Error Visualizer
对于MVC视图,任何编译时错误仍将在各自的.cs文件中以红色下划线显示,但在解决方案资源管理器中不会向上传播这些错误(绝不会,甚至在包含这些错误的源文件中也不会)。
感谢BlueClouds纠正我之前的说法。
BlueClouds
我刚刚报告了这作为一个问题在扩展的github项目。
运行代码分析
热键:Alt+季
帮助我捕捉Razor错误。