我想要一個msbuild任務來編譯視圖,以便我可以看到編譯時是否有編譯時錯誤。有任何想法嗎?在ASP.NET MVC中編譯視圖
回答
我坦率地說會建議RazorGenerator NuGet包。這樣,您的視圖在保存時會生成一個.designer.cs文件,除了爲您的視圖獲取編譯時錯誤之外,它們還會預編譯爲程序集(=更快的預熱),並且Resharper還提供了一些其他幫助。
要使用這個包括在你的RazorGenerator NuGet包的ASP.NET MVC項目,並在工具項目下安裝了「剃刀發生器」擴展 - >擴展和更新
我們用這個和每個編譯開銷與此方法少得多。最重要的是,我可能會推薦使用RedGate的.NET Demon,它可以進一步減少編譯時間的影響。
希望這會有所幫助。
您可以使用此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>
ASP.NET MVC的下一個版本(一月左右可)應當有編制的意見MSBuild任務,所以你可能要等待。
另外,如果你使用ReSharper的,你可以主動解決方案範圍的分析,它會檢測ASPX文件,你可能有任何編譯器錯誤。這就是我們所做的。
它確實適用於aspx文件,但解決方案範圍內的分析不包括ascx文件(用戶控件) – mookid8000 2009-01-11 11:12:17
I相信它在R#5中有效,但它對於大型項目來說是一個巨大的資源(即使在我的16GB家用機器上也不值得使用)。 – Andrew 2010-07-24 13:47:36
@Andrew/@ mookid8000 - R#還會捕獲編譯器不會出現的錯誤,比如缺少/不正確的視圖和操作。 R#會讓你的電腦變慢一點(我發現在一個4GB內存和一個超線程CPU的大型項目上很好),但是我很輕鬆地減少了我花在等待它的時間,並且最終減少了對我的操作作爲R#的代碼提供了更高級別的操作,它們將我必須採取的許多步驟進行批處理,以便手動完成相同的任務。你的項目必須是巨大的! – 2010-09-02 01:08:39
從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的早期版本中創建包含的意見通過執行以下步驟構建時驗證項目:在文本編輯器
- 打開項目文件。
- 添加以下元素中最頂層的
<PropertyGroup>
元素:<MvcBuildViews>true</MvcBuildViews>
- 在項目文件的末尾,取消了
<Target Name="AfterBuild">
元素,並修改它以匹配以下:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>
我不知道你使用的是什麼viewengine,但如果你使用剃刀,你可能想看看我的博客文章:Compile your asp.net mvc Razor views into a seperate dll
應該可以將該代碼用於其他viewengines,但尚未完成&測試,但尚未
此處給出的答案適用於某些MVC版本,但不適用於其他人。
簡單的解決方案爲MVC1工作,但升級到MVC2的意見不再被編譯。這是由於網站項目文件中的錯誤。看到這篇Haacked文章。
看到這個:http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx
使用Visual Studio的Productivity Power Tools(免費)擴展有助於一點。具體來說,Solution Error Visualizer
功能。有了它,在解決方案資源管理器中(在發現錯誤的源文件中)以可視方式標記了編譯錯誤。但是,出於某種原因,此功能在代碼中的其他任何地方都不起作用。
使用MVC視圖,任何編譯時錯誤仍將在它們各自的.cs文件中以紅色下劃線,但在解決方案資源管理器中不會向上傳播這些錯誤(絕不會在包含源文件中)。
感謝BlueClouds
糾正我以前的陳述。
我剛剛在擴展的github項目中報告了此爲issue。
生成>運行代碼分析
快捷鍵:Alt鍵+ F11
幫我趕上剃鬚刀錯誤。
- 1. 動態編譯ASP.NET MVC視圖
- 2. 如何強制編譯ASP.NET MVC視圖?
- 3. 在ASP.NET MVC中使用ImageResizer進行視圖預編譯
- 4. 在asp.net中預編譯剃刀視圖mvc 5
- 5. ASP.NET MVC在單獨的程序集中編譯視圖
- 6. 在ASP.NET MVC和JS文件中編譯前視圖
- 7. 在ASP.NET MVC良好實踐中編譯視圖?
- 8. ASP.NET MVC5視圖預編譯
- 9. ASP.NET MVC「視圖」編碼
- 10. 在發佈asp.net mvc項目時編譯視圖
- 11. 預編譯ASP.net mvc
- 12. 在ASP.NET MVC視圖
- 13. 如何使用App_Code helpers使用ASP.NET MVC視圖預編譯?
- 14. 修改它們後,ASP.NET MVC何時重新編譯視圖?
- 15. ASP.NET MVC強類型視圖編譯錯誤
- 16. 返回在ASP.NET MVC中的視圖MVC
- 17. 在編譯時VS2010編譯視圖?
- 18. ASP.NET MVC 3預編譯
- 19. 編譯MVC和預編譯視圖並部署到Azure WebRole
- 20. asp.net mvc搜索和編輯視圖
- 21. ASP.NET MVC - 視圖編輯模型
- 22. 在一個asp.net MVC視圖
- 23. 在ASP.Net渲染視圖MVC
- 24. 行情在Asp.NET MVC視圖
- 25. 如何在ASP.NET MVC視圖
- 26. 在Asp.Net MVC中是否存在視圖?
- 27. ASP.net MVC - 從視圖
- 28. ASP.NET MVC從視圖
- 29. 如何在MVC Razor視圖中查找編譯時錯誤?
- 30. ASP.NET MVC:在ASP.NET Forms中包含MVC局部視圖頁面
這已過時,請參閱下面的自述文件摘錄。 – JarrettV 2009-02-12 20:00:34
http://www.luisrocharging/2011/10/avoiding-mvcbuildviews-build-time.html – 2013-10-16 01:44:27