2008-12-20 53 views

回答

120

我坦率地说会建议RazorGenerator NuGet包。这样,您的视图在保存时会生成一个.designer.cs文件,除了为您的视图获取编译时错误之外,它们还会预编译为程序集(=更快的预热),并且Resharper还提供了一些其他帮助。

要使用这个包括在你的RazorGenerator NuGet包的ASP.NET MVC项目,并在工具项目下安装了“剃刀发生器”扩展 - >扩展和更新

我们用这个和每个编译开销与此方法少得多。最重要的是,我可能会推荐使用RedGate的.NET Demon,它可以进一步减少编译时间的影响。

希望这会有所帮助。

40

您可以使用此aspnet_compiler

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v /Virtual/Application/Path/Or/Path/In/IIS/Metabase -p C:\Path\To\Your\WebProject -f -errorstack C:\Where\To\Put\Compiled\Site

其中 “/虚拟/应用/路径/或/路径/在/ IIS /元数据库” 是这样的:“/MyApp的 “或” /流明/ w3svc2/1 /根/

也有一个AspNetCompiler Task MSDN上,展示如何用aspnet_compiler集成的MSBuild:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="PrecompileWeb"> 
     <AspNetCompiler 
      VirtualPath="/MyWebSite" 
      PhysicalPath="c:\inetpub\wwwroot\MyWebSite\" 
      TargetPath="c:\precompiledweb\MyWebSite\" 
      Force="true" 
      Debug="true" 
     /> 
    </Target> 
</Project> 
+3

这已过时,请参阅下面的自述文件摘录。 – JarrettV 2009-02-12 20:00:34

+0

http://www.luisrocharging/2011/10/avoiding-mvcbuildviews-build-time.html – 2013-10-16 01:44:27

10

ASP.NET MVC的下一个版本(一月左右可)应当有编制的意见MSBuild任务,所以你可能要等待。

announcement

22

另外,如果你使用ReSharper的,你可以主动解决方案范围的分析,它会检测ASPX文件,你可能有任何编译器错误。这就是我们所做的。

+3

它确实适用于aspx文件,但解决方案范围内的分析不包括ascx文件(用户控件) – mookid8000 2009-01-11 11:12:17

+2

I相信它在R#5中有效,但它对于大型项目来说是一个巨大的资源(即使在我的16GB家用机器上也不值得使用)。 – Andrew 2010-07-24 13:47:36

+2

@Andrew/@ mookid8000 - R#还会捕获编译器不会出现的错误,比如缺少/不正确的视图和操作。 R#会让你的电脑变慢一点(我发现在一个4GB内存和一个超线程CPU的大型项目上很好),但是我很轻松地减少了我花在等待它的时间,并且最终减少了对我的操作作为R#的代码提供了更高级别的操作,它们将我必须采取的许多步骤进行批处理,以便手动完成相同的任务。你的项目必须是巨大的! – 2010-09-02 01:08:39

513

从RC1(而不是由谷歌索引)

ASP.NET编译后生成步骤

目前自述Word文档,内错误直到运行时才能检测到视图文件。为了让你在编译时检测到这些错误,ASP.NET MVC项目现在包含一个默认禁用的MvcBuildViews属性。要启用此属性,打开项目文件,并设置MvcBuildViews属性为true,如下面的例子:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <MvcBuildViews>true</MvcBuildViews> 
    </PropertyGroup> 

注意启用此功能增加了一些开销到编译时间。

您可以更新用MVC的早期版本中创建包含的意见通过执行以下步骤构建时验证项目:在文本编辑器

  1. 打开项目文件。
  2. 添加以下元素中最顶层的<PropertyGroup>元素: <MvcBuildViews>true</MvcBuildViews>
  3. 在项目文件的末尾,取消了<Target Name="AfterBuild">元素,并修改它以匹配以下:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" /> 
</Target> 
0

使用Visual Studio的Productivity Power Tools免费)扩展有助于一点。具体来说,Solution Error Visualizer功能。有了它,在解决方案资源管理器中(在发现错误的源文件中)以可视方式标记了编译错误。但是,出于某种原因,此功能在代码中的其他任何地方都不起作用。

使用MVC视图,任何编译时错误仍将在它们各自的.cs文件中以红色下划线,但在解决方案资源管理器中不会向上传播这些错误(绝不会在包含源文件中)。

感谢BlueClouds纠正我以前的陈述。

我刚刚在扩展的github项目中报告了此为issue

2

生成>运行代码分析

快捷键:Alt键+ F11

帮我赶上剃须刀错误。