1. ホーム
  2. c#

[解決済み] VS2013の外部ビルドエラー "error MSB4019: The imported project <path> was not found" が発生する。

2022-02-17 16:36:20

質問

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.

以下、問題の2行です。

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

元の2行目はv10.0でしたが、それを手動でv12.0に変更しました。

$(VSToolsPath) は、私が見る限りでは v11.0 (VS2012) フォルダまで伸びていますが、これは明らかにもう存在しません。パスはv12.0にあるべきでした。

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

システム環境変数のテーブルにVSToolsPathを指定してみましたが、外部ビルドユーティリティはv11.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" そうでなければ、次にその プロジェクトで、削除されたノードが再び追加されます。

その他、webdeployを使用する必要がある場合や、ビルドサーバーを使用する場合は、上記の解決策は機能しませんが、そのような場合は VisualStudioVersion プロパティをビルドスクリプトに追加してください。

msbuild myproject.csproj /p:VisualStudioVersion=12.0

またはビルド定義を編集してください。