我想要一个msbuild任务来编译视图,以便我可以看到编译时是否有编译时错误。有任何想法吗?在ASP.NET MVC中编译视图
回答
我坦率地说会建议RazorGenerator NuGet包。这样,您的视图在保存时会生成一个.designer.cs文件,除了为您的视图获取编译时错误之外,它们还会预编译为程序集(=更快的预热),并且Resharper还提供了一些其他帮助。
要使用这个包括在你的RazorGenerator NuGet包的ASP.NET MVC项目,并在工具项目下安装了“剃刀发生器”扩展 - >扩展和更新
我们用这个和每个编译开销与此方法少得多。最重要的是,我可能会推荐使用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
其中 “/虚拟/应用/路径/或/路径/在/ IIS /元数据库” 是这样的:“/MyApp的 “或” /流明/ w3svc2/1 /根/“
也有一个AspNetCompiler Task MSDN上,展示如何用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任务,所以你可能要等待。
另外,如果你使用ReSharper的,你可以主动解决方案范围的分析,它会检测ASPX文件,你可能有任何编译器错误。这就是我们所做的。
它确实适用于aspx文件,但解决方案范围内的分析不包括ascx文件(用户控件) – mookid8000 2009-01-11 11:12:17
I相信它在R#5中有效,但它对于大型项目来说是一个巨大的资源(即使在我的16GB家用机器上也不值得使用)。 – Andrew 2010-07-24 13:47:36
@Andrew/@ mookid8000 - R#还会捕获编译器不会出现的错误,比如缺少/不正确的视图和操作。 R#会让你的电脑变慢一点(我发现在一个4GB内存和一个超线程CPU的大型项目上很好),但是我很轻松地减少了我花在等待它的时间,并且最终减少了对我的操作作为R#的代码提供了更高级别的操作,它们将我必须采取的许多步骤进行批处理,以便手动完成相同的任务。你的项目必须是巨大的! – 2010-09-02 01:08:39
从RC1(而不是由谷歌索引)
ASP.NET编译后生成步骤
目前自述Word文档,内错误直到运行时才能检测到视图文件。为了让你在编译时检测到这些错误,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>
元素:<MvcBuildViews>true</MvcBuildViews>
- 在项目文件的末尾,取消了
<Target Name="AfterBuild">
元素,并修改它以匹配以下:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
我不知道你使用的是什么viewengine,但如果你使用剃刀,你可能想看看我的博客文章:Compile your asp.net mvc Razor views into a seperate dll
应该可以将该代码用于其他viewengines,但尚未完成&测试,但尚未
此处给出的答案适用于某些MVC版本,但不适用于其他人。
简单的解决方案为MVC1工作,但升级到MVC2的意见不再被编译。这是由于网站项目文件中的错误。看到这篇Haacked文章。
看到这个:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
使用Visual Studio的Productivity Power Tools(免费)扩展有助于一点。具体来说,Solution Error Visualizer
功能。有了它,在解决方案资源管理器中(在发现错误的源文件中)以可视方式标记了编译错误。但是,出于某种原因,此功能在代码中的其他任何地方都不起作用。
使用MVC视图,任何编译时错误仍将在它们各自的.cs文件中以红色下划线,但在解决方案资源管理器中不会向上传播这些错误(绝不会在包含源文件中)。
感谢BlueClouds
纠正我以前的陈述。
我刚刚在扩展的github项目中报告了此为issue。
生成>运行代码分析
快捷键:Alt键+ F11
帮我赶上剃须刀错误。
- 1. 动态编译ASP.NET MVC视图
- 2. 如何强制编译ASP.NET MVC视图?
- 3. 在ASP.NET MVC中使用ImageResizer进行视图预编译
- 4. 在asp.net中预编译剃刀视图mvc 5
- 5. ASP.NET MVC在单独的程序集中编译视图
- 6. 在ASP.NET MVC和JS文件中编译前视图
- 7. 在ASP.NET MVC良好实践中编译视图?
- 8. ASP.NET MVC5视图预编译
- 9. ASP.NET MVC“视图”编码
- 10. 在发布asp.net mvc项目时编译视图
- 11. 预编译ASP.net mvc
- 12. 在ASP.NET MVC视图
- 13. 如何使用App_Code helpers使用ASP.NET MVC视图预编译?
- 14. 修改它们后,ASP.NET MVC何时重新编译视图?
- 15. ASP.NET MVC强类型视图编译错误
- 16. 返回在ASP.NET MVC中的视图MVC
- 17. 在编译时VS2010编译视图?
- 18. ASP.NET MVC 3预编译
- 19. 编译MVC和预编译视图并部署到Azure WebRole
- 20. asp.net mvc搜索和编辑视图
- 21. ASP.NET MVC - 视图编辑模型
- 22. 在一个asp.net MVC视图
- 23. 在ASP.Net渲染视图MVC
- 24. 行情在Asp.NET MVC视图
- 25. 如何在ASP.NET MVC视图
- 26. 在Asp.Net MVC中是否存在视图?
- 27. ASP.net MVC - 从视图
- 28. ASP.NET MVC从视图
- 29. 如何在MVC Razor视图中查找编译时错误?
- 30. ASP.NET MVC:在ASP.NET Forms中包含MVC局部视图页面
这已过时,请参阅下面的自述文件摘录。 – JarrettV 2009-02-12 20:00:34
http://www.luisrocharging/2011/10/avoiding-mvcbuildviews-build-time.html – 2013-10-16 01:44:27