可以编译Razor视图吗?

时间:2011-03-31 12:48:33

标签: asp.net-mvc asp.net-mvc-3 compilation razor

我想知道是否可以编译Razor视图,就像基于WebForm的视图一样?

编译Razor视图是否有意义,为什么有人想要这样做?

4 个答案:

答案 0 :(得分:56)

  

修改

     

以下是关于此主题的博文:

     

How to Detect Errors of Our ASP.NET MVC Views on Compile Time

要编辑您的视图,请执行以下操作;

  1. 右键卸载您的项目 单击解决方案上的项目 VS中的资源管理器并单击卸载 项目
  2. 右键单击具有的项目 已转换为不可用 项目并单击“编辑” your_project_name.csproj“(那 将是.vbproj如果你的 项目是VB项目)
  3. 请参阅以下代码;

      

    <!--There some lines of code here and I deleted them to get to the point quickly-->
    
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    

  4. 将MvcBuildViews代码值从false更改为true

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

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

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

答案 1 :(得分:32)

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

我通过关注above advice并添加了一个条件属性找到了一个很好的折衷方案:

<MvcBuildViews Condition=" '$(Configuration)' == 'Release' ">true</MvcBuildViews>

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

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

答案 2 :(得分:24)

是的,你可以。请看以下帖子:Compile your asp.net mvc Razor views into a seperate dll

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

答案 3 :(得分:1)

是的,这是可能的。事实上,我能想到的最好的例子就是电子邮件模板引擎。如果您编译并缓存模板,那么您可以快速删除电子邮件,而无需重新进行解析。

这也是在MVC之外使用Razor的一个很好的例子。