VS2013 不編譯 ASP.NET MVC5 視圖
我的 Visual Studio Ultimate 2013 Update 4 不編譯 ASP.NET MVC 5 視圖。
儘管編譯總是成功的,但偶爾會在視圖上發現編譯錯誤。Intellisense 也在視圖上打開和關閉。我會說它在 VS2012 中工作得更好(我在那個版本上沒有太多 MVC)。
我試圖添加
<MvcBuildViews>true</MvcBuildViews>到 .csproj 文件中,該文件用於在 VS2010 中工作,但它不再工作了。知道可能是什麼問題嗎?
更新:我正在尋找查看視圖錯誤的方法,因為它發生在以前版本的 VS 中。
您的項目是否包含目標並在建構事件後掛鉤?
msbuild WebApplication1.csproj /t:MvcBuildViews從命令行嘗試,它會檢查您是否同時定義了預設屬性集和目標。<PropertyGroup> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup> <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> </Target>嘗試從 VS2013U4 中創建一個空白 MVC 項目並將 csproj 與您的進行比較。
在解決方案資源管理器中右鍵點擊您的 Web 項目。點擊
Unload Project。右鍵點擊該項目,然後點擊Edit <projname>.csproj。確保你有這個元素(如果它不存在,添加它)。
<Project> <PropertyGroup> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup> </Project>向下滾動到底部。您應該會看到一些註釋“要修改您的建構過程,請將您的任務添加到以下目標之一中並取消註釋它。” 在其下方,添加此標記:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <ItemGroup> <ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" /> <ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories("$(BaseIntermediateOutputPath)", "PackageTmp", System.IO.SearchOption.AllDirectories))" /> </ItemGroup> <Delete Files="@(ExtraWebConfigs)" /> <RemoveDir Directories="@(ExtraPackageTmp)" /> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> </Target>(上面的程式碼應該有一個根節點的父
<Project>節點,以防你看不到我提到的註釋)關閉
.csproj文件,然後在解決方案資源管理器中右鍵點擊您的項目,然後點擊Reload Project。這會將您的視圖添加到編譯步驟,如果發現錯誤,將停止您的建構。我發現這是一件好事,因為沒有它我有時不會注意到錯誤列表中的錯誤,直到我部署了我的站點然後手動點擊它們。請注意,它會為您的建構步驟增加一些時間,從而顯著減慢它的速度。根據您要實現的目標,您可能希望有選擇地啟用/禁用它以實現快速建構 -> 測試工作流程。
這個答案的靈感來自 Chris Hyne 對MVCBuildViews 無法正常工作和Razor 視圖可以編譯嗎?.