9

我们有一个项目,如果视图的 .cshtml 文件中有任何错误,我们希望构建视图以生成编译时错误。

尽管如此,编译时间还是会急剧增加:

  • MvcBuildViews = true耗时 62 秒
  • MvcBuildViews = false需要 9 秒

这是可以接受的吗?因为增长非常剧烈,我们无法忍受等待这样的编译时间。我们有什么办法可以改进这种编译?

到目前为止,该项目包含大约 130 个视图和部分视图(.cshtml 文件)。这被认为是大/中/小吗?

4

3 回答 3

12

好吧,我认为有可能编译视图本身就是一件好事,但我也不能等那么久。所以我更喜欢做的是MvcBuildViews = trueProperyGroupRelease 中添加它,这样你就只在 Release 时和部署之前编译视图

属性组应如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

所以把你的

<MvcBuildViews>true</MvcBuildViews>

在此 Release 块内。这样,您仍然可以编译一次视图,而不是每次尝试调试时...

于 2013-12-07T00:08:56.630 回答
2

我们在同样的问题上苦苦挣扎。我们开始编译 Views 是为了捕捉在集成测试UX 测试期间会出现在我们身上的明显问题。更糟糕的是不知何故潜入生产的错误。

但是,正如您所注意到的,我们的构建时间变得无法忍受。像您一样,我们的开发人员构建了无数次,这成为我们一天的主要部分。我们在午餐后开玩笑说要进行测试,这样我们就可以在外出时完成构建。

我们最终在UX-tests之前开始构建。

现在我们正朝着预编译的方向发展。目前我们团队中只有一个人采用了它,并且显然预编译明显优于构建(增量与总)。设置基本上是一个 nuget 提取。

这些文章应该是一个好的开始

http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/

http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

于 2013-02-14T02:46:57.170 回答
0

在调试配置的 csproj 中将 MvcBuildViews 设置为 false。

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

在菜单“工具/外部工具”中添加以下外部命令

Title: Compile with MVC views
Command: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
Arguments: $(SolutionDir)$(SolutionFileName) /p:MvcBuildViews=true
Initial directory: $(SolutionDir) 
Use Output window:  checked

然后添加一个快捷方式:进入工具/选项/环境/键盘找到命令“Tools.ExternalCommandX”,其中X是您刚刚添加的外部命令的位置。分配一个键(例如:Ctrl-shift-1)

现在解释:我们有同样的问题。大多数时候我们不想编译视图,但我们喜欢在签入代码之前编译它们,这样我们在 50 个视图中编译 1 次。为了实现这一点,我使用 mvcbuildviews 参数向 msbuild 添加了一个外部工具命令。唯一的缺点是 Visual Studio 的错误窗口中没有列出错误,您必须查看输出窗口并双击错误(如果有)。

于 2016-02-05T16:48:16.023 回答