可以编译Razor视图吗?

Kha*_*meh 46 asp.net-mvc compilation razor asp.net-mvc-3

我想知道是否可以编译Razor视图,比如基于WebForm的视图?

编译Razor视图甚至是有意义的,为什么有人想这样做呢?

tug*_*erk 58

编辑:

这是一篇关于这个主题的博客文章:

如何在编译时检测ASP.NET MVC视图的错误

要编译您的视图,请执行以下操作:

  1. 通过右键单击VS中解决方案资源管理器上的项目并单击卸载项目来卸载项目
  2. 右键单击已转换为不可用项目的项目,然后单击"编辑your_project_name.csproj"(如果您的项目是VB项目,则为.vbproj)
  3. 看下面的代码;

    <!--There some lines of code here and I deleted them to get to the point quickly-->
    
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    
    Run Code Online (Sandbox Code Playgroud)

  4. 将MvcBuildViews标记值更改falsetrue

  5. 之后保存并重新加载您的项目.

在构建解决方案以进行编译之后,您将看到您的视图也将被编译.

注意:要测试它,请在您的一个视图中破坏一些代码并尝试构建.你会看到你会收到一条错误信息.

  • 在这个改变之后,我开始在构建我的解决方案时得到"allowDefinition ='MachineToApplication'超出应用程序级别"错误消息.解决方案是在*调试和释放模式下运行_Clean Solution_. (6认同)
  • 我在VS2013中看不到`<MvcBuildViews> false </ MvcBuildViews>` (3认同)

Ste*_*uts 32

MvcBuildViews检查非常好,但如果它足够复杂,它会为构建您的Web应用程序增加5-10秒的惩罚.它不会缓存编译输出,因此每次都会对所有视图进行完整编译.

通过遵循上述建议并添加Condition属性,我找到了一个很好的折衷方案:

<MvcBuildViews Condition=" '$(Configuration)' == 'Release' ">true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)

我们希望ReSharper能够在视图中标记任何错误,并且开发人员可以始终将发布配置作为测试构建 - 我们有一个开发人员运行的"预检"脚本,因此他们可以轻松确保包目标工作,因此on - 如果所有失败,构建服务器将捕获它.

也许这个技巧很明显,但我只是真正开始正确地学习msbuild而不是为这些任务编写Powershell脚本.我希望这对某人有帮助.


Ser*_*eit 24

是的你可以.看一下以下帖子:将你的asp.net mvc Razor视图编译成一个单独的dll

这是一个关于如何将剃刀视图编译成单独的dll的"循序渐进"指南.我不知道这是不是你的目标,但它肯定会让你朝着正确的方向前进.

  • 这个答案现在已经过时了,你现在应该参考这篇文章:http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html (5认同)