我想知道是否可以编译Razor视图,就像基于WebForm的视图一样?
编译Razor视图是否有意义,为什么有人想要这样做?
答案 0 :(得分:56)
修改强>
以下是关于此主题的博文:
How to Detect Errors of Our ASP.NET MVC Views on Compile Time
要编辑您的视图,请执行以下操作;
请参阅以下代码;
<!--There some lines of code here and I deleted them to get to the point quickly-->
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
将MvcBuildViews代码值从false
更改为true
之后保存并重新加载 项目
在构建解决方案以进行编译之后,您将看到您的视图也将被编译。
注意:来测试它,故意破坏你的一个视图中的一些代码并尝试构建。你会看到你会收到一条错误信息。
答案 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的一个很好的例子。