在生成服務器上找不到Microsoft.WebApplication.targets。 您有什麼解決方案?

嘗試在構建服務器上構建個人項目會給我如下錯誤: 服務器

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

幾個月前,我在Build Server上安裝了Visual Studio 2010,從而解決了這個問題。 可是如今我要從頭開始安裝新服務器,我想知道是否有更好的解決方案來解決此問題。 工具


#1樓

根據此處的這篇文章,您能夠簡單地下載Microsoft Visual Studio 2010 Shell(集成)可再發行軟件包,並安裝目標。 ui

這避免了在生成服務器上安裝Visual Studio的須要。 spa

我剛剛嘗試了一下,能夠驗證它是否有效: 代理

以前: code

錯誤MSB4019:找不到導入的項目「 C:\\ Program Files(x86)\\ MSBuild \\ Microsoft \\ VisualStudio \\ v10.0 \\ WebApplications \\ Microsoft.WebApplication.targets」。 確認聲明中的路徑正確,而且文件在磁盤上。 圖片

安裝後: get

[正確構建] it

顯然,這比在構建服務器上安裝Visual Studio更好。 io


#2樓

UPD:從VS2017開始,構建工具中的工做負載能夠徹底消除此問題。 參見@SOReader答案

若是您不但願在構建服務器上進行任何修改,而且仍然但願在源代碼控制以外直接構建項目,則最好將所需的二進制文件置於源代碼控制下。 您須要修改項目文件中的imports部分,以下所示:

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

第一行是相對於解決方案目錄的新位置的實際導入。 第二個是原始行的關閉版本( Condition="false" ),該版本容許Visual Studio仍將您的項目視爲有效的Web應用程序項目(這就是VS 2010 SP1自己的技巧)。

不要忘記將C:\\Program Files (x86)\\Microsoft\\VisualStudio\\v10.0\\WebApplications複製到源代碼管理下的BuildTargets文件夾。


#3樓

您還可使用NuGet包MSBuild.Microsoft.VisualStudio.Web.targets ,在Visual Studio項目中引用它們,而後按照Andriy K的建議更改引用。


#4樓

經過NuGet添加依賴項並設置構建參數

目標:無需對構建代理進行任何更改/安裝

在這裏採用了LloydNuGet方法的混合方法,該方法基於Andrik提交的二進制依賴項解決方案。

我之因此但願可以添加新的構建代理,而沒必要使用諸如此類的項目進行預配置,是由於。

  1. 在裝有Visual Studio的計算機上,打開解決方案; 忽略該Web項目失敗。
  2. 在NuGet程序包管理器中,添加MSBuild.Microsoft.VisualStudio.Web.targets ,如Lloyd所述。
  3. 這會將二進制文件解析爲[solution]\\packages\\MSBuild.Microsoft.VisualStudio.Web.targets.nn.nnn\\tools\\VSToolsPath\\
    1. 您能夠將它們複製到引用文件夾並提交,
    2. 或者只是在它們所在的地方使用它們。 我選擇了這個,可是稍後我將不得不處理路徑中的版本號。

在版本7中,我執行了如下操做。 這可能不是必需的,而且如今絕對不須要基於註釋。 請參閱下面的評論。

  1. 接下來,在TeamCity構建配置中,爲env.VSToolsPath添加一個構建env.VSToolsPath並將其設置到VSToolsPath文件夾中; 我使用了..\\packages\\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\\tools\\VSToolsPath

#5樓

這就是您所須要的。 只有103MB。 不要安裝全部內容

在此處輸入圖片說明

相關文章
相關標籤/搜索