2008-12-20 78 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

幫我趕上剃鬚刀錯誤。