c# - visual - xamarin




外部VS2013生成錯誤“錯誤MSB4019:導入的項目<path>未找到” (15)

基於TFS 2015 Build Server

如果您計算此錯誤... Error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.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\v14.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.

打開錯誤消息中指定的項目的.csproj文件,並註釋掉以下部分

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

我正在通過命令行構建項目,而不是在Visual Studio 2013中。請注意,我已將項目從Visual Studio 2012升級到2013.該項目在IDE內部生成良好。 另外,我完全卸載了VS2012,重新啟動,並安裝了VS2013。 我擁有的唯一版本的Visual Studio是2013 Ultimate。

ValidateProjects:
    39>path_to_project.csproj(245,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.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.
    39>Done Building Project "path_to_project.csproj" (Clean target(s)) -- FAILED.

這裡有兩條問題:

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

原來的第二行是v10.0,但我手動將其更改為v12.0。

$(VSToolsPath)從我看到的v11.0(VS2012)文件夾延長,顯然不再存在。 路徑應該是v12.0。

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

我嘗試在我的系統環境變量表中指定VSToolsPath,但外部構建實用程序仍然使用v11.0。 我試圖通過註冊表進行搜索,結果沒有任何結果。

可悲的是,我沒有看到使用確切命令行的簡單方法。 我使用構建工具。

思考?


giammin的解決方案部分不正確。 你不應該從你的解決方案中刪除整個PropertyGroup。 如果你這樣做, MSBuild的“DeployTarget = Package”功能將停止工作。 此功能依賴於設置的“VSToolsPath” 。

<PropertyGroup>
  <!-- VisualStudioVersion is incompatible with later versions of Visual Studio.  Removing. -->
  <!-- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> -->
  <!-- VSToolsPath is required by MSBuild for features like "DeployTarget=Package" -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

在命令行中運行它也會解決問題。 SETX VisualStudioVersion“12.0”


在我的情況下,我只是通過打開.csproj文件評論下面的行,並做了伎倆

<!-- <Import Project="..\PRPJECTNAME.targets" /> -->

我的問題可能會有所不同,但我被拖到這裡,但這可能有助於某人。

我從我的解決方案中選擇了一個Web項目,並嘗試將其作為一個獨立的項目進行開放,然後才能解決問題。


如果您將Visual Studio 2012遷移到2013,則使用edior打開* .csprorj項目文件。
並檢查'Project'標記的ToolsVersion元素。

這是4.0的價值
你做到12.0

  • <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0"
    
  • <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0"
    

或者,如果您使用msbuild構建,那麼只需指定VisualStudioVersion屬性即可

msbuild /p:VisualStudioVersion=12.0


您應該將文件夾Web應用程序從C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \複製到C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \


我也有同樣的錯誤..我這樣做來解決它

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />

改成

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

它完成了。


我也有這個,你可以通過在你的構建定義中設置工具版本來修復它。

這很容易做到。 打開你的構建定義並轉到“ Process ”頁面。 然後在“ 3.高級 ”組下,您有一個名為“ MSBuild Arguments ”的屬性。 使用以下語法放置參數

/p:VisualStudioVersion=12.0 

如果你有更多的參數,請用空格而不是逗號分隔它們。


我嘗試了所有上述解決方案,但仍然沒有運氣。 我聽說有人在他們的構建服務器上安裝Visual Studio來修復它,但我只有5GB的可用空間,所以我只是將C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio複製到我的構建服務器,並將其稱為一天。 之後開始工作,使用team team 9.x和visual studio 2013。


我安裝了Visual Studio 2013。 這對我有效:

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

所以我已經將條件從==更改為!= ,並將值從10.0更改為12.0


我有同樣的問題,並找到一個更簡單的解決方案

這是由於Vs2012在csproj文件中添加了這部分內容:

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

您可以安全地移除該部分,並且您的解決方案將生成。

正如Sielu指出的那樣,您必須確保.proj文件以<Project ToolsVersion="12"開頭,否則下一次使用visual studio 2010打開該項目時,它將再次添加已刪除的節點。

否則,如果您需要使用webdeploy或使用構建服務器,上述解決方案將無法工作,但您可以在構建腳本中指定VisualStudioVersion屬性:

msbuild myproject.csproj /p:VisualStudioVersion=12.0

或編輯您的構建定義:


我有類似的問題。 所有提出的解決方案都只是解決這個問題,但並不能解決錯誤的根源。 如果您正在使用tfs構建服務器,則應該不應用@giammin解決方案,因為它只是崩潰的發布功能。 @ cat5dev解決方案 - 解決問題,但不解決它的來源。

我幾乎可以確定,您正在使用VS2012的構建過程模板,如ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xaml這些構建模板已針對VS2012和$(VisualStudioVersion)設置為11.0

應該使用VS2013 ReleaseTfvcTemplate.12.xaml ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml 過程模板,其中$(VisualStudioVersion)設置為12.0

這在沒有任何項目文件更改的情況下運行


我發現我錯過了本地PC上的WebApplications文件夾,沒有像使用2012時那樣安裝Visual Studio 2017。


當我安裝一些VS組件時,我得到了這個錯誤。 不幸的是,這些答案都沒有幫助我。 我使用TFS進行命令開發,我沒有權限編輯構建定義。 我通過刪除名為VS110COMNTOOLSVS120COMNTOOLS環境變量來解決此問題。 我認為它與我的VS組件一起安裝。


這是密切相關的,但可能會或可能不會解決OP的具體問題。 在我的情況下,我試圖使用VS2013自動部署Azure站點。 然而,通過VS構建和部署工作,使用MSBuild在“目標”周圍顯示出類似的錯誤。 原來,MSBuild在VS2013下有所不同,現在是VS的一部分,而不是.Net Framework(參見http://timrayburn.net/blog/visual-studio-2013-and-msbuild/ )。 基本上,使用正確版本的MSBuild:

舊的,VS2012

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

新,VS2013

C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe

較新的,VS2015

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

更新的,VS2017(沒有完全測試,但發現 - 他們已經移動了一些東西)

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe






visual-studio-2013