以下可能不是所有人都想要的,我希望Visual Studio团队可以添加一个简单的UI项目设置切换来执行相同的操作(这可能是一项非常简单的任务),但这里是我找到的一种方法自问这个问题得到编译的cshtml剃须刀文件。不幸的是,虽然它发生在每一个版本上,但实际上速度慢得多,但是如果你只在Release上设置它,那么它是一个很好的折衷:
转到你的项目文件夹(在VS中右键单击项目 - >打开文件夹...),找到.csproj文件,在记事本中打开它(当然是++),然后在xml('Project')的根目录中找到几个PropertyGroup
a PropertyGroup
,该条件指定具体到只发布模式设置(还有另外一个用于调试,你可以做同样的事情):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MvcBuildViews>true</MvcBuildViews>
<NoWarn>162, 168, 169, 219, 414, 612, 618, 649, 1591</NoWarn>
</PropertyGroup>
只需添加MvcBuildViews
元素(或发改变如果它已经存在),并确保值是真实的,突然间,你会注意到每一个构建需要更长的时间[插入笑脸眨眼图释]。但是,你确实得到了你的剃须刀代码的编译,它会发现你想要的错误,非常好。所以这个团队已经有了这个功能,奇怪的是他们没有将UI选项添加到MVC项目设置中。
我想这回答了我的原始问题:“有什么办法可以在项目级别指定预编译选项吗?”我在网上找到了我想到的答案,我不记得现在在哪里,而且我确定它也在其他地方。感谢大卫再次澄清这个问题。
@JWendel我找到了这个:http://msdn.microsoft.com/en-us/library/ms229863(v=vs.100).aspx。其中一个选项是:'-u',描述为:“指定Aspnet_compiler.exe应该创建一个预编译应用程序,以允许随后更新诸如.aspx页面之类的内容。”我还没有尝试过,你会把它放在'Build Events'标签 - >'Pre-build event command-line'中吗? – 2013-03-13 22:30:47
不是真的安德鲁,对不起。我确实发现了这个:Razor Generator,但是它相比之下采取了一个激进措施,在安装它之后我必须做一个大的凌乱清理,突然我的所有视图都有问题(比如动态代码,甚至是ViewBag,都会抛出错误)。 – 2014-01-21 04:46:08