web-dev-qa-db-ja.com

外部VS2013ビルドエラー「エラーMSB4019:インポートされたプロジェクト<パス>が見つかりませんでした」

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を使用しています。私はレジストリを検索しようとしましたが、それは何も思いつかなかった。

残念ながら、正確なコマンドラインを使用するための簡単な方法はわかりません。私はビルドツールを使います。

考えですか?

198

私は同じ問題を抱えていたし、より簡単な解決策を見つける

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

またはビルド定義を編集します。

edit build definition to specify the <code>VisualStudioVersion</code> property

246
giammin

私もこれを持っていました、そしてあなたはあなたのビルド定義でツールバージョンを設定することによってそれを修正することができます。

これはとても簡単です。ビルド定義を開き、 "Process"ページに移動します。次に、 "3.上級"グループの下に、 "MSBuild引数"というプロパティがあります。次の構文でそこにパラメータを配置します。

/p:VisualStudioVersion=12.0 

さらにパラメータがある場合は、コンマではなくスペースで区切ります。

70
Ralph Jansen

これは密接に関連していますが、OP固有の問題を解決する可能性があります。私の場合は、VS2013を使用してAzureサイトの展開を自動化しようとしていました。しかし、VSを使用したビルドとデプロイは、MSBuildを使用しても「ターゲット」について同様のエラーが発生しました。 MSBuildはVS2013では異なり、現在はVSの一部であり、.NET Frameworkの一部ではありません( http://timrayburn.net/blog/visual-studio-2013-and-msbuildを参照)。 / )。基本的には、正しいバージョンのMSBuildを使用してください。

OLD、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
50
Jester

私はKinookからの返事を受け取ったばかりで、 リンクをくれました

基本的に、私はbuldingの前に以下を呼ぶ必要があります。 Visual Studio 2013は自動的に環境を最初に登録するわけではないと思いますが、2012年に登録したか、登録して忘れてしまいました。

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86

うまくいけば、この記事は他の人に役立ちます。

22

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)' != ''" />
21
cat5dev

FSharpターゲットでこの問題が発生しました(FSharpTargetsPathが空でした)。

パスの多くは、VSバージョンを参考にして構築されています。

さまざまな理由で、私たちのビルドはシステム権限で実行され、環境変数 "VisualStudioVersion"は "VS" 2013インストーラによってのみ "ユーザー"レベルで設定されました - これは十分に公平です。

"VisualStudioVersion"環境変数が、実行しているレベル(システムまたはユーザー)で "12.0"に設定されていることを確認してください。

10
Scott

コマンドラインでこれを実行すると、問題も解決します。 SETX VisualStudioVersion "12.0"

6
Steve

Visual Studio 2012を2013に移行する場合は、*。csprorjプロジェクトファイルをediorで開きます。
そして '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

3
Kim Ki Won

Visual Studio 2013がインストールされています。これは私のために働いた:

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

そこで、条件を==から!=に変更し、値を10.0から12.0に変更しました。

2
pinus.acer

外部ビルドユーティリティを使用していました。私が正しく製品を理解しているのなら、アリのようなものを考えてください。単なる商用版です。私は答えを製造元に問い合わせる必要がありました。

結局のところ、プロジェクトにはグローバルマクロDEVSTUDIO_NET_DIRがあります。パスを.Netに変更しなければなりませんでした。彼らは様々なビジュアルスタジオのバージョンを "アクション"としてリストアップしていますが、私はこれをオフにしますが、すべての道は舞台裏でその1つのグローバル変数に戻ります。私が私の理解の中で何かを見逃していない限り、私が私の方法を持っていたならば、私は製品に対する欠陥としてそれを挙げるでしょう。パスを修正してビルドの問題を修正しました。

2

私も同じエラーがありました..私はそれを修正するためにこれを行いました

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

への変更

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

そしてそれは完了です。

2
Pyro

私は同様の問題を抱えていました。提案されたすべての解決策は、この問題を回避するためのものですが、エラーの原因を解決するものではありません。 tfs build serverを使用しているのであれば、@ giamminソリューションは、単に公開機能がクラッシュしているだけなので、適用しないでください。 @ cat5devソリューション - 問題は解決しますが、問題の原因は解決されません。

ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xamlこれらのビルドテンプレートはVS2012用に作成されており、$(VisualStudioVersion)は11.0に設定されています。

あなたは$(VisualStudioVersion)が12.0に設定されているVS2013ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml用のビルドプロセステンプレートを使用するべきです

これはプロジェクトファイルを変更しなくても機能します。

2
Imaginary

私の場合、私はちょうど.csprojファイルを開くことによって行の下にコメントしてトリックをしました

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

私の問題は異なるかもしれませんが、私はここにドラッグされていますが、これは誰かに役立つかもしれません。

私は自分のソリューションから単一のWebプロジェクトを選び、問題を解決することができるようになった上で、問題を起こしているスタンドアロンプ​​ロジェクトとしてそれを開こうとしました。

2
Usman Younas

WebApplicationsフォルダをC:¥Program Files(x86)¥MSBuild¥Microsoft¥VisualStudio¥v12.0¥からC:¥Program Files(x86)¥MSBuild¥Microsoft¥VisualStudio¥v11.0¥にコピーする必要があります。

1
Tazos333

私の場合、開発環境はVS2013で、私はTFS 2010を使用しています。ビルドは.NET 4.5.1をターゲットとしていました。 CI用に自動ビルドを設定していました。上記の回避策を試したときはいつでも - プロパティグループを完全に削除する、または一部の行を置き換えるなど - TFSではビルドが失敗していました。両方を同時に達成することはできませんでした。

だから最後に私は問題を解決するためにMSBuild引数を渡さなければなりませんでした。

ビルド定義の編集>プロセス> 3.詳細> MSBuild引数(に設定)/p:VisualStudioVersion=12.0

それは私のために働きました。

1
Vishwajit G

TFS 2015ビルドサーバーに基づく

このエラーに対処した場合... 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> -->

0
Julius Depulla

いくつかのVSコンポーネントをインストールすると、このエラーが発生しました。残念なことに、これらの答えのどれも私を助けませんでした。コマンド開発にTFSを使用していますが、ビルド定義を編集する権限がありません。私はこの問題を解決するために、VS110COMNTOOLSVS120COMNTOOLSという環境変数を削除しました。私のVSコンポーネントと一緒にインストールされたと思います。

0
Joseph Katzman

問題を解決するために必要なことは1つだけです。VisualStudio 2012/2013およびMSBuild Tools 2013のサポートはTeamCity 8.1でのみ導入されたため、TeamCityをバージョン8.1.x以上にアップグレードします。 TeamCityをアップグレードしたら、ビルドステップでMSBuild Toolsのバージョン設定を変更して問題を解決してください。詳細についてはここを読んで: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html

0
Alex T.

見つけるだろう

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

このエラーが表示されているcsprojファイル内。 csprojからこれを削除してからビルドしてください。

0
Mukund

私は上記のすべての解決策を試してみましたが、それでもまだ運はありません。私は人々がそれを修正するために彼らのビルドサーバーにビジュアルスタジオをインストールしているのを聞いたが、私はちょうど私のビルドサーバーにC:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudioをコピーしてそれを呼んだ。その後、チームシティ9.xとビジュアルスタジオ2013を使用して作業を開始しました。

0
odyth

ローカルPCにWebApplicationsフォルダがなく、2012を使用していたときのようにVisual Studio 2017と一緒にインストールされませんでした。

0
Kris

私 - VisualStudioVersion変数のv11.0値をv10.0に変更するのに役立ったものは何もありません。 .csprojファイルの変数を変更してもしませんでした。コマンドプロンプトで設定していませんでした。等...

その特定のバージョン(v11.0)の私のローカルフォルダを私のビルドサーバにコピーすることになった。

0

私の場合は、間違ったバージョンのMSBuild.exeを使用していました。

使用する必要があるバージョンは、プロジェクトの作成に使用したVisual Studioのバージョンによって異なります。私の場合は14.0が必要でした(Visual Studio 2015を使用したことがあります)。

これは次のアドレスで見つかりました:

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

あなたは下を見ることができます:

C:\Program Files (x86)\MSBuild

他のバージョンを見つけるために。

0
EM-Creations