我想要一个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
其中“/Virtual/Application/Path/Or/Path/In/IIS/Metabase”是这样的:“/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,你可以激活Solution Wide Analysis,它将检测你在aspx文件中可能存在的任何编译器错误。这就是我们所做的……
使用Visual Studio的Productivity Power Tools(免费)扩展会有所帮助。具体来说,就是Solution Error Visualizer特性。使用它,在解决方案资源管理器中(在发现错误的源文件中)可视地标记编译错误。但是,由于某种原因,该特性不能像处理代码中的其他错误一样正常工作。
对于MVC视图,任何编译时错误仍将在各自的.cs文件中以红色下划线显示,但在解决方案资源管理器中不会向上传播这些错误(绝不会,甚至在包含这些错误的源文件中也不会)。
感谢BlueClouds纠正我之前的声明。
我刚刚报告了这个扩展的github项目的一个问题。
你可以使用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任务,展示了如何将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>
坦率地说,我会推荐RazorGenerator的金块包。这样,当您保存视图时,视图就会生成一个.designer.cs文件,除了为视图获取编译时错误外,它们还会预编译到程序集(=更快的预热),Resharper也提供了一些额外的帮助。
要使用这包括RazorGenerator nuget包在你的ASP。NET MVC项目,并在工具→扩展和更新项下安装“Razor Generator”扩展。
我们使用这种方法,每次编译的开销要少得多。在此基础上,我可能会推荐RedGate的. net Demon,它进一步大大减少了编译时间的影响。
运行代码分析
热键:Alt+F11
帮助我捕捉Razor错误。
推荐文章
- ASP中基于角色的访问控制(RBAC)与基于声明的访问控制(CBAC)NET MVC
- 带有空模型的Renderpartial传递了错误的类型
- MVC4数据类型。日期编辑器不会在Chrome中显示日期值,在Internet Explorer中没问题
- 如何修改标签文本?
- 我如何使用IValidatableObject?
- 如何指定最小值,但没有使用范围数据注释属性的最大小数?
- 在EF中更新父实体时如何添加/更新子实体
- ASP。NET身份的默认密码散列器-它是如何工作的,它是安全的?
- 无法加载文件或程序集“System.Web.Mvc”
- 从控制器内获得控制器和动作名称?
- _ViewStart的位置和方式。CSHTML布局文件链接?
- Visual Studio - Resx文件默认“内部”为“公共”
- 用c#解析JSON
- ASP是什么?NET Identity的IUserSecurityStampStore<TUser>接口?
- ASP。网网络。config: configSource vs.文件属性