2017-05-19 268 views
13

我試圖將我們的buildserver(jenkins)從Visual Studio 2015升級到2017.我們正在通過MS-Build進行構建。我已經下載並安裝了這個answer中描述的MS-Buld工具。如果我編譯我的項目,我得到一個錯誤,找不到Microsoft.WebApplication.targetsMS-Build 2017「Microsoft.WebApplication.targets」缺失

詳細的錯誤:

error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" 

我在MS-build目錄進行查找:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets" 
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  11.01.2012  00:23   19654 Microsoft.WebApplication.targets                                             
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  22.07.2013  01:25   19995 Microsoft.WebApplication.targets                                             
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  06.07.2015  21:55   20118 Microsoft.WebApplication.targets                                             
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  22.07.2013  01:25   19995 Microsoft.WebApplication.targets

可以看到該文件存在於舊版本的編譯器,但是對於v15.0,它缺失。

我也在生成服務器上安裝了Visual Studio 2017。如果我使用Visual Studio 2017進行編譯,該項目將成功構建。

任何提示如何解決此問題?一種可能的解決方案是生成從C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications指向舊版本v14.0文件(位於C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications下)的符號鏈接。

THX

+0

你是如何構建項目與MSBuild?由於您已經在構建服務器上安裝了Visual Studio 2017,爲什麼仍然要安裝MS-Build工具?從Visual Studio 2013開始,MSBuild將作爲Visual Studio的一部分而不是.NET Framework提供。 –

回答

17

看起來你缺少Microsoft.VisualStudio.Workload.WebBuildTools工作量。

可以使用

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools 
+0

解決了這個問題,thx。 – Moerwald

+2

我如何運行這個命令它的'vs_buildtools.exe'在開發人員工具中不被識別爲內部或外部命令錯誤2017 – Developerzzz

+5

如果您已經下載了「Visual Studio 2017構建工具」安裝程序(https:// www .visualstudio.com/thank-downloading-visual-studio /?sku = BuildTools&rel = 15),那麼你可以啓動該安裝程序,點擊修改並勾選「Web開發構建任務」工作負載模塊複選框。然後點擊修改按鈕,讓安裝程序完成。 – Spiralis

17

安裝在它上面接受的答案是技術上是正確的只是不完整的,有點混亂,至少對我來說,和需要一個額外的步驟來獲得視覺構建專業的工作。

  1. vs_buildtools.exe在技術上並不存在。我不得不create問一個問題,該文件是在哪裏。這並不明顯,vs_buildtools.exe是vs_buildtools _ *******。exe,並且是實際的安裝程序。另外上面提到的「-add ***」只是一個簡寫。可以轉到GUI並檢查兩個工作流程任務。這也是一樣的。我結束了vs_buildtools文件,但不需要它。

  2. VSB Pro仍然沒有建立我的項目。我上面拋出了同樣的錯誤。祕密調味汁只是將C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0中的WebApplications文件夾複製到C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0。然後我重建了這個項目,一切都很好。我將WebApplication.targets文件放在預期位置。

爲什麼微軟無法做到這一點超出了我的想象。另外,爲什麼單獨安裝。 VS17安裝了大量的東西。像往常一樣,構建工具是隱含的。隨你。

我發佈了這個答案,希望它可以幫助別人。我陷入陷阱,失去了一段時間,我的項目沒有建立。我希望這個答案能澄清一些事情。

+1

確認「構建Visual Studio 2017工具」實際上將目標複製到C:\ Program Files文件(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0,而msbuild實際上會嘗試在C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v15.0,所以我必須複製文件夾。顯然第一個被IDE使用,第二個被獨立msbuild使用。奇怪。 – ZZZ

+0

複製文件夾爲我做了訣竅。謝謝 – rodrigorf

+0

你不應該手動複製任何東西。 vs_buildtools.exe只是Visual Studio安裝程序。它可以幫助您安裝構建工具或Visual Studio。對於這兩者,您可以安裝不同的工作負載和組件。如果您想爲Visual Studio安裝工作負載,則需要單擊「修改」按鈕。這樣你就可以安裝所需的組件。 –

1

如何創建VS 2017 pro,asp.net MVC應用程序並與Jenkins一起構建?

使用VS在這兩個開發機2017年的親和構建服務器

檢查VisualStudio的設置爲15
進口項目=「$(MSBuildExtensionsPath32)\微軟\ VisualStudio的\ V15.0 \ web應用\微軟.WebApplication.targets」條件= 「假」

設置的MSBuild工具
到C:\ Program Files文件(x86)的\微軟的Visual Studio \ 2017年\專業\的MSBuild \ 15.0 \斌\ MSBuild.exe在jenkins全球配置經理

隨着詹金斯,執行Windows命令批處理:
retore nugets: 「C:\ Program Files文件(x86)的\詹金斯\工具\的NuGet \ NuGet.exe」 還原「C:\ Program Files文件(x86)的\詹金斯\工作區\ theapp_build \ theapp.sln」

隨着詹金斯,執行Windows命令批處理:
的MSBuild build文件:theapp.sln
命令行參數:/ NOLOGO /噸:恢復/噸:重建/ p:配置=「調試」/p:VisualStudioVersion=15.0

1

使用chocolaty可輕鬆安裝2017版本工具,並且已包含WebBuildTools選件。一旦choco is installed類型在管理員命令提示符下輸入:

choco install microsoft-build-tools --version 15.0.26228.0 -y 
4

複製WebApplications文件夾從

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

或者在生成腳本中添加以下行然後編譯

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

一定要以提升的權限

0

我不得不從Visual Studio 2015年已經升級到了2017年後,類似的問題。當我嘗試加載Web應用程序項目運行它,它扔我的錯誤消息:

The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" was not found. Also, tried to find "WebApplications\Microsoft.WebApplication.targets" in the fallback search path(s) for $(VSToolsPath) - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0" . These search paths are defined in "C:\Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_558e146f\devenv.exe.config". Confirm that the path in the declaration is correct, and that the file exists on disk in one of the search paths.

該錯誤的解決方案我找到了here

在我的情況下,.csproj的文件包含以下行:

<PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath> 
</PropertyGroup> 

VSToolPath標籤由v$(VisualStudioVersion)更換v14.0後,該項目可能會被加載。

我還通過v10.0取代v14.0VisualStudioVersion標籤,如在上述鏈路示出了解決方案。但對於我來說,它也是以14.0的速度運行。

下面是這些線路應該如何看到底:

<PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
</PropertyGroup> 

如果你沒有在你的.csproj有這些線的話,那麼你必須手動添加他們的權利,在此之前行:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" /> 

在我的情況(略有不同的錯誤信息,但同樣的問題),這是該行:

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

似乎自2011年以來使用Visual Studio版本創建的項目包含VSToolsPath重新定義的行,而較舊的文件沒有。升級到較新的VS版本時,Visual Studio從不自動添加它們,這就是爲什麼你應該添加它們,如果它們不在那裏。

來源的信息:https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (點擊顯示更多評論看到完整的話題 - 不幸的是,我不能直接鏈接到評論這個「多」一節)。