ASP.Net MVC MvcBuildViews大大增加了编译时间

时间:2013-02-14 02:08:39

标签: asp.net asp.net-mvc

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

但是,编译时间大幅增加:

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

这是可以接受的吗?因为增加是非常激烈的,我们不能忍受等待这样的编译时间。我们可以用任何方式改进这样的编译吗?

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

3 个答案:

答案 0 :(得分:12)

我认为有可能编译视图本身是一件好事,但我也不能等待那么久。 所以我更喜欢在Release MvcBuildViews = true中添加ProperyGroup,以便您只在发布时和部署之前编译视图

属性组应如下所示:

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

所以把你的

<MvcBuildViews>true</MvcBuildViews>

在此版本块内。这样你仍然可以编译你的视图一次,而不是每次尝试调试...

答案 1 :(得分:2)

我们在同样的问题上挣扎。我们开始编译视图,以便在集成测试 UX测试期间捕获可能会出现的明显问题。更糟糕的是,这些错误以某种方式悄悄进入生产阶段。

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

我们最终在 UX-tests 之前搬到了建筑。

现在我们正在进行预编译。我们团队中只有一个人现在采用它,显然预编译明显优于构建(增量与总数)。设置基本上是一个nuget fetch。

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

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

答案 2 :(得分:0)

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

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

在菜单&#34;工具/外部工具&#34;

中添加以下外部命令
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 / options / environnement / keyboard 找到命令&#34; Tools.ExternalCommandX&#34;其中X是您刚刚添加它的外部命令的位置。分配一个键(例如:Ctrl-shift-1)

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

相关问题