2012-03-15 65 views
3

我已經將MvcBuildViews元素設置爲true,因此我的MVC 3項目也會編譯視圖。編譯MVC 3視圖與構建服務器上的視圖助手失敗

但是,正因爲如此,我們的構建服務器無法構建構建。我已經搜查周圍可能的原因,但我的問題似乎是從常見的不同:

錯誤:_Layout.cshtml(xx): The name "Element" does not exist in the current context.

在這種情況下Element是我們正在做的助手視圖的引用,調用之一的方法。

任何想法可能是什麼問題?

(順便說一下,構建服務器是TFS2010)

+0

你能展現_Layout.cshtml? – 2012-03-15 15:30:13

+0

這是一個非常大的文件,我不能真正顯示NDA協議的代碼。不過,你究竟想要檢查什麼?有錯誤的具體路線是什麼更多的,一個助手打電話:'@helper PutElement(){@ Element.Method(PARAM,PARAM,PARAM)}' – Alpha 2012-03-15 15:52:52

回答

5

我發現問題的根本問題。我在這裏更新,以便每個人都可以從我的情況中學習。

的TFS構建服務器保持與該項目上移動的緣故失敗的話,我只是編輯的MVC項目,所以它不會編譯服務器上的意見,但只是在我們的開發機器。爲了做到這一點,我從

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 

改爲

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true' AND '$(BuildingInsideVisualStudio)'=='true'"> 

當我們把所有這一切並部署了建立一個實際的環境中,我發現了同樣的錯誤彈出了我們的部署環境。我去看了一下部署包,結果發現我的幫助視圖Element.cshtml不在App_Code文件夾中,它應該在那裏。

我再次打開項目文件並搜索該文件的引用。我發現,在具體提及,該設置是

<None Include="App_Code\Element.cshtml" /> 

,而不是

<Content Include="App_Code\Element.cshtml" /> 

我只是改變了基準作出的方式(也說不上來是如何得到這樣),一切工作就像一個魅力。

道德故事:注意什麼錯誤

現在我很好奇爲什麼它不會在我們的開發機器上失敗。可能是因爲構建服務器具有不同的輸出文件夾,所以它不會在輸出中找到.cshtml?也許這件事情對於一些其他的問題...