我想要一个msbuild任务来编译视图,这样我就可以看到是否有编译时错误。
knsnq2tg1#
当前,只有在运行时才能检测视图文件中的错误。为了使您能够在编译时检测这些错误,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创建的项目,以包括视图的生成时验证:1.在文本编辑器中打开项目文件。1.在最顶层的<PropertyGroup>元素下添加以下元素:<MvcBuildViews>true</MvcBuildViews>1.在项目文件的末尾,取消注解<Target Name="AfterBuild">元素并将其修改为与以下内容匹配:
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
<Target Name="AfterBuild">
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" /> </Target>
eivnm1vs2#
坦率地说,我推荐RazorGeneratornuget包。这样的话,当你保存视图时,会生成一个.designer.cs文件,除了为视图获取编译时错误外,它们还被预编译到程序集(=更快的预热),Resharper也提供了一些额外的帮助。要使用此功能,请在ASP.NET MVC项目中包含RazorGeneratornuget包,并在工具→扩展和更新下的项目下安装“Razor Generator”扩展。我们使用这种方法,每次编译的开销要少得多。除此之外,我可能会推荐**.NET Demon by RedGate**,它进一步大大减少了编译时间的影响。
.designer.cs
kg7wmglp3#
您可以使用**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/元数据库”类似于:“/我的应用程序”或“/lm/w3 svc 2/1/根目录/”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>
n8ghc7c14#
另外,如果你使用Resharper,你可以激活解决方案范围内的分析,它会检测任何编译器错误,你可能在aspx文件。
pod7payv5#
下一个ASP.NETMVC版本(大约在一月份发布)应该有编译视图的MSBuild任务,所以您可能需要等待。参见announcement
nhhxz33t6#
这里给出的答案适用于某些MVC版本,但不适用于其他版本。这个简单的解决方案对MVC1有效,但是在升级到MVC2时,视图不再被编译。这是由于网站项目文件中的一个bug。参见这篇被黑客攻击的文章。请参见:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
beq87vna7#
生成〉运行代码分析快捷键:Alt+F11帮助我捕捉剃刀错误。
fafcakar8#
使用Visual Studio的Productivity Power Tools(free)扩展名会有一些帮助。特别是Solution Error Visualizer特性。使用它,编译错误可以在解决方案资源管理器中(在发现错误的源文件中)以可视方式标记。但是,由于某些原因,该特性不能像处理代码中其他位置的其他错误那样工作。对于MVC视图,任何编译时错误在它们各自的.cs文件中仍然会用红色下划线标出,但是这些错误的信号不会在解决方案资源管理器中向上传播(无论如何,甚至不会在包含的源文件中传播)。感谢BlueClouds更正我之前的声明。我刚刚在扩展的github项目中将其作为issue进行了报告。
Solution Error Visualizer
BlueClouds
8条答案
按热度按时间knsnq2tg1#
ASP.NET编译器生成后步骤
当前,只有在运行时才能检测视图文件中的错误。为了使您能够在编译时检测这些错误,ASP.NET MVC项目现在包含默认情况下处于禁用状态的MvcBuildViews属性。若要启用此属性,请打开项目文件并将MvcBuildViews属性设置为true,如下例所示:
注意启用此功能会增加一些构建时间开销。
通过执行以下步骤,您可以更新使用早期版本的MVC创建的项目,以包括视图的生成时验证:
1.在文本编辑器中打开项目文件。
1.在最顶层的
<PropertyGroup>
元素下添加以下元素:<MvcBuildViews>true</MvcBuildViews>
1.在项目文件的末尾,取消注解
<Target Name="AfterBuild">
元素并将其修改为与以下内容匹配:eivnm1vs2#
坦率地说,我推荐RazorGeneratornuget包。这样的话,当你保存视图时,会生成一个
.designer.cs
文件,除了为视图获取编译时错误外,它们还被预编译到程序集(=更快的预热),Resharper也提供了一些额外的帮助。要使用此功能,请在ASP.NET MVC项目中包含RazorGeneratornuget包,并在工具→扩展和更新下的项目下安装“Razor Generator”扩展。
我们使用这种方法,每次编译的开销要少得多。除此之外,我可能会推荐**.NET Demon by RedGate**,它进一步大大减少了编译时间的影响。
kg7wmglp3#
您可以使用**aspnet_compiler**执行以下操作:
其中“/虚拟/应用程序/路径/或/路径/在/IIS/元数据库”类似于:“/我的应用程序”或“/lm/w3 svc 2/1/根目录/”
MSDN上还有一个**AspNetCompiler Task**,展示了如何将aspnet_compiler与MSBuild集成:
n8ghc7c14#
另外,如果你使用Resharper,你可以激活解决方案范围内的分析,它会检测任何编译器错误,你可能在aspx文件。
pod7payv5#
下一个ASP.NETMVC版本(大约在一月份发布)应该有编译视图的MSBuild任务,所以您可能需要等待。
参见announcement
nhhxz33t6#
这里给出的答案适用于某些MVC版本,但不适用于其他版本。
这个简单的解决方案对MVC1有效,但是在升级到MVC2时,视图不再被编译。这是由于网站项目文件中的一个bug。参见这篇被黑客攻击的文章。
请参见:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
beq87vna7#
生成〉运行代码分析
快捷键:Alt+F11
帮助我捕捉剃刀错误。
fafcakar8#
使用Visual Studio的Productivity Power Tools(free)扩展名会有一些帮助。特别是
Solution Error Visualizer
特性。使用它,编译错误可以在解决方案资源管理器中(在发现错误的源文件中)以可视方式标记。但是,由于某些原因,该特性不能像处理代码中其他位置的其他错误那样工作。对于MVC视图,任何编译时错误在它们各自的.cs文件中仍然会用红色下划线标出,但是这些错误的信号不会在解决方案资源管理器中向上传播(无论如何,甚至不会在包含的源文件中传播)。
感谢
BlueClouds
更正我之前的声明。我刚刚在扩展的github项目中将其作为issue进行了报告。