2012-12-27 41 views
3

我們已經將我們的MVC3項目升級到VS2010中運行的MVC4,仍然針對4.0框架(尚未準備好4.5)。這一切在開發中都可以正常工作,但構建服務器上的失敗(使用Jenkins/Hudson,令人遺憾),並帶有以下消息:升級到MVC4目標4.0和VS2010,但MS Build仍在尋找v11.0

錯誤MSB4019:導入的項目「C:\ Program Files(x86)未找到MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets「。確認聲明中的路徑是正確的,並且該文件存在於磁盤上。

我在項目文件中查找了一條與此匹配的語句,但沒有。第二行(下)在的csproj明確目標V10.0:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> 

我想第一個可以以某種方式解決到11.0,但我不知道在那裏將被來自何處。該解決方案已在VS 2012中打開至少一次,所以我假設它在某處插入了某些內容,但不知道是什麼。

在我的開發環境,我已經改名爲VS 2012和路徑仍然可以加載和建立我的項目在2010年VS

回答

3

找到它 - 答案是或多或少的位置:http://blogs.msdn.com/b/webdev/archive/2012/08/22/visual-studio-project-compatability-and-visualstudioversion.aspx

基本上,如果您曾在VS2012中打開MVC4項目,則會更改項目文件以動態檢測VS版本,如果未找到該值,則默認爲v10.0。

我並不是100%確定v11.0來自構建服務器。恢復.sln文件似乎沒有什麼區別。但是,在將特定更改恢復到.csproj文件後,它會成功構建。

具體來說,我評論所添加的行,像這樣:

<!-- 
     <PropertyGroup> 
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> 
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
     </PropertyGroup> 
--> 
     <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 
<!-- 
     <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 
--> 
     <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 
+0

+1解決我的問題。感謝分享。 – Michael

+0

評論這些似乎打破了出版雖然。有關於此的任何想法? 「項目中不存在目標GatherAllFilesToPublish」錯誤在沒有它們的情況下開始發生。 – mikeschuld

相關問題