当前位置:  开发笔记 > 编程语言 > 正文

在ASP.NET MVC中编译视图

如何解决《在ASP.NETMVC中编译视图》经验,为你挑选了6个好方法。

我想要一个msbuild任务来编译视图,这样我就可以看到编译时是否存在编译错误...编译时.有任何想法吗?



1> JarrettV..:

来自RC1的自述文字doc(未被谷歌索引)

ASP.NET编译器后构建步骤

目前,直到运行时才检测到视图文件中的错误.为了让您在编译时检测到这些错误,ASP.NET MVC项目现在包含一个MvcBuildViews属性,默认情况下禁用该属性.要启用此属性,请打开项目文件并将MvcBuildViews属性设置为true,如以下示例所示:


  
    true
  

注意 启用此功能会增加构建时间的开销.

您可以通过执行以下步骤来更新使用以前版本的MVC创建的项目,以包括视图的构建时验证:

    在文本编辑器中打开项目文件.

    在最顶层的元素下添加以下元素: true

    在项目文件的末尾,取消注释元素并对其进行修改以匹配以下内容:


    


为什么,为什么,为什么......没有用于构建视图或不具有视图的键盘快捷键?MS为什么?
如果这对您的项目不起作用,请检查项目文件中是否存在 false .它覆盖了我在其上添加的新元素.
确保将EnableUpdateable设置为false,否则视图将不会被预编译. false true (http://devcarl.posterous.com/dont-combine-enableupdateable-and-mvcbuildvie)
@mxmissile:Scott Guthrie建议在您的解决方案中添加Web部署项目,以便在Web应用程序项目中获得此类支持:http://weblogs.asp.net/scottgu/archive/2006/09/22/Tip_2F00_Trick_3A00_-Optimizing-ASP .NET-2.0的Web项目 - 建造 - 性能 - 与-VS-2005.aspx
这是添加到MVC工具的解决方案.http://stackoverflow.com/a/2670792/878612

2> Mirko..:

我坦率地推荐RazorGenerator nuget包.这样,您的视图.designer.cs在保存时会生成一个文件,并且除了为您的视图获取编译时错误之外,它们还会预编译到程序集中(=更快的预热),Resharper也会提供一些额外的帮助.

要使用此包括RazorGenerator NuGet包在你的ASP.NET MVC项目,并安装了" 剃刀发电机项下在"扩展工具→扩展和更新.

我们使用这个,并且使用这种方法的每次编译的开销要少得多.除此之外,我可能会推荐RedGate的.NET Demon,它可以进一步减少编译时的影响.

希望这可以帮助.


不幸的是它只支持C#而没有VB.Net
@zoidbergi RazorGenerator与VS2012合作; 使用RazorGenerator.Mvc和RazorGenerator.MsBuild时:不需要扩展名.请参阅[stacktoheap.com]上的博客文章(http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/)
这可以用于仅查找错误 - 还是在部署应用程序时替换视图引擎?

3> maxnk..:

您可以使用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集成:


    
        
    


这已过时,请参阅下面的自述文档摘录.

4> bh213..:

此外,如果您使用Resharper,您可以激活Solution Wide Analysis,它将检测您在aspx文件中可能存在的任何编译器错误.这就是我们做的......


对于大型项目来说,"将PC放慢一点"是一种保守的说法.我的构建机器有16GB的RAM和8个核心(2个Xeons),它只是CRAWLS.我有一种感觉R#只是不是为我们的大小项目而制作的......例如我们的解决方案有~30个项目,几百万个LOC,以及数百个视图.我喜欢R#在我们较小的项目上(例如一些项目,不超过50个视图),但在我们的大项目中,我们总是要把它关掉.
它适用于aspx文件,但解决方案范围的分析不包括ascx文件(用户控件)
我相信它确实在R#5中,但它对于大型项目来说是一个巨大的资源浪费(即使在我的16GB家用机器上它也不值得使用).
@Andrew/@ mookid8000 - R#还会捕获编译器不会发生的错误,例如缺少/错误的视图和操作.R#会慢慢降低你的PC速度(我发现在4GB ram和超线程CPU的大型项目中它很好)但是我很容易回过头来等待它的时间,最后我的操作更少了作为R#的代码提供了更高级别的操作,这些操作将我必须采取的许多步骤批量组合在一起以手动完成相同的任务.你的项目必须是巨大的!

5> bh213..:

ASP.NET MVC的下一个版本(1月左右可用)应具有编译视图的MSBuild任务,因此您可能需要等待.

见公告



6> user1040323..:

这里给出的答案适用于某些MVC版本,但不适用于其他版本.

这个简单的解决方案适用于MVC1,但在升级到MVC2时,视图不再受到影响.这是由于网站项目文件中的错误.看到这篇Haacked文章.

见:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有