我想要一个 msbuild 任务来编译视图,这样我就可以查看是否存在编译时错误......编译时。有任何想法吗?
来自 RC1 的自述词文档(未被 google 索引)
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 创建的项目以包括视图的构建时验证:
在文本编辑器中打开项目文件。在最顶部的
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
坦率地说,我会推荐 RazorGenerator nuget 包。这样,您的视图会在您保存它们时生成一个 .designer.cs
文件,并且除了为您的视图获取编译时错误之外,它们还会被预编译到程序集中(= 更快的预热),并且 Resharper 还提供了一些额外的帮助。
要使用它,请在 ASP.NET MVC 项目中包含 RazorGenerator nuget 包,并在工具 → 扩展和更新下的项目下安装“Razor Generator”扩展。
我们使用它,并且使用这种方法每次编译的开销要少得多。最重要的是,我可能会推荐 RedGate 的 .NET Demon,它进一步大大减少了编译时间的影响。
希望这可以帮助。
您可以为此使用 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
其中“/Virtual/Application/Path/Or/Path/In/IIS/Metabase”是这样的:“/MyApp”或“/lm/w3svc2/1/root/”
MSDN 上还有一个 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>
此外,如果您使用 Resharper,您可以激活解决方案范围分析,它会检测您在 aspx 文件中可能存在的任何编译器错误。这就是我们所做的...
此处给出的答案适用于某些 MVC 版本,但不适用于其他版本。
简单的解决方案适用于 MVC1,但在升级到 MVC2 时,视图不再被编译。这是由于网站项目文件中的错误造成的。请参阅这篇 Haacked 文章。
看到这个:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
构建 > 运行代码分析
热键:Alt+F11
帮助我发现 Razor 错误。
使用 Visual Studio 的 Productivity Power Tools(免费)扩展有点帮助。具体来说,Solution Error Visualizer
功能。有了它,在解决方案资源管理器中(在发现错误的源文件中)以可视方式标记编译错误。但是,由于某种原因,此功能不适用于代码中其他任何地方的其他错误。
使用 MVC 视图,任何编译时错误仍将在其各自的 .cs 文件中以红色下划线显示,但这些错误不会在解决方案资源管理器中向上传播(绝不会在包含的源文件中传播)。
感谢BlueClouds
纠正我之前的陈述。
我刚刚在扩展程序的 github 项目中将此报告为 issue。
不定期副业成功案例分享