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


201

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を使用しています。レジストリを検索してみましたが、何も見つかりませんでした。

残念ながら、正確なコマンドラインを使用する簡単な方法はありません。ビルドツールを使用しています。

考え?



私の場合、WebPublishターゲットでビルドしていたビルドイベントで正しいVisualStudioVersionを指定する必要がありました。
user145400 2017

回答:


250

同じ問題があり、より簡単な解決策を見つけました

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

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

ビルド定義を編集して<code> VisualStudioVersion </ code>プロパティを指定します


1
コマンドプロンプトからmsbuildを使用するとエラーが発生しました。この部分をプロジェクトファイルから削除すると、問題が解決しました。
Peter Hedberg、2014年

7
私はこの回答を使用しましたが、私の* projファイルが<Project ToolsVersion = "12"で始まることを確認した場合にのみ機能しました。 (つまり、プロジェクトを最新バージョンに再移行しました)。
Sielu

3
@giammin、私はすでに解決策を見つけました。プロジェクトファイルからセクションを削除しないでください。ビルド定義で適切なツールバージョンを設定します。これはとても簡単です。ビルド定義を開き、[プロセス]ページに移動します。次に、「3。Advanced」グループの下に「MSBuild Arguments」というプロパティがあります。次の構文 "/p:VisualStudioVersion=12.0"でパラメータをそこに配置します。もちろん引用符なし。さらにパラメーターがある場合は、コンマではなくスペースで区切ります。削除するよう提案した構成は、ビルドプロセスのビジュアルスタジオの他の部分で使用されています...
Ralph Jansen

9
その行を削除すると、Web配置が壊れるようです
Colin Pear

4
上記で推奨されているように/p:VisualStudioVersion=12.0プロパティを使用することで同じ問題が解決されました。ありがとう
Randeep

70

私にもこれがあり、ビルド定義でツールのバージョンを設定することで修正できます。

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

/p:VisualStudioVersion=12.0 

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


1
TFS 2005からTFS 2013へのアップグレードが完了しました。これが最後のハードルでした。これは間違いなく私たちにとってはうまくいき、髪を抜く手間を省きました。本当にありがとう!+1。
Simon Whitehead

2
Sayed Ibrahim Hashimiによるこの記事では、Visual Studio 2010/2012の問題について説明しています。コマンドラインビルドでは、slnファイル形式のバージョン-1をVisualStudioVersionとして使用します。この値は、Ralphが説明するようにコマンドラインから、またはビルドスクリプトのMSBuildタスクのプロパティとしてオーバーライドできます。Visual Studio 2013でも同じ問題があり、VisualStudioVersionをオーバーライドすると問題が解決しました。
mcdon 2014

1
これも私たちにとってはうまくいきました。ここで説明するビルドテンプレート自体を変更することも検討しました。これは、数十のビルド定義がある場合に適しています。
JamesQMurphy 2014

これは私のために働いた。csprojファイルでvisualstudioversionへの参照をすべて削除し、そのmsbuild引数を追加しました
Jhayes2118 '

51

これは密接に関連していますが、OP固有の問題を修正する場合と修正しない場合があります。私の場合、VS2013を使用してAzureサイトの展開を自動化しようとしていました。VSを介してビルドおよびデプロイすることはできますが、MSBuildを使用すると、「ターゲット」に関して同様のエラーが発生しました。MSBuildはVS2013では異なり、.NET FrameworkではなくVSの一部になりました(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

これで解決しました。また、ここで同様の質問に対する同様の回答:stackoverflow.com/a/19826448/61569
Anthony F

22

私はリンクをくれたKinookから返事を受け取りました:

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

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

うまくいけば、この投稿は他の誰かを助けます。


どうもありがとうございました。これによりnode-gyp、nodeJS Cpp default.propsが見つからない場合の問題が解決しました +1
ポグリンディス2016年

21

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

10

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

パスの多くは、VSバージョンを参照して作成されています。

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

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


5
これはおそらく、ビルドサーバー(CruiseControlやTeamCityなど)を実行するときの一般的なシナリオであり、サービスはインタラクティブなデスクトップアクセス許可を持たない特定のサービスアカウントで実行されます。このヒントで問題が解決しました(VS 2008がServer 2008 R2のクリーンインストールにインストールされ、CruiseControl.NETがインストールされています)
David Keaveny '19

「VisualStudioVersion」はどこにありますか?
WEFX 2018年

@WEFX Systemは、コントロールパネルから選択して環境変数を表示し、次にを選択してAdvanced system settings、最後にクリックしますEnvironment Variables
Scott

6

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


これは私にとってはうまくいき、プロジェクトファイルを変更するよりも望ましい方法でした。
Sean

4

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


1
正しくビルドできないToolsVersionのプロジェクトを見たので、ToolsVersionがこのエラーメッセージを修正する唯一の変数であってはなりません。
Patrick Desjardins 2014

2

外部ビルドユーティリティを使用していました。Antのようなものを考えてください。私が製品を正しく理解しているのであれば、単に商用バージョンです。答えはメーカーに連絡する必要がありました。

結局のところ、プロジェクトにはグローバルマクロDEVSTUDIO_NET_DIRがあります。そこで.Netへのパスを変更する必要がありました。彼らはさまざまなビジュアルスタジオのバージョンを「アクション」としてリストしていますが、それは私を通して、すべての道が舞台裏でその1つのグローバル変数に戻っています。理解に何か欠けているのでない限り、私は自分のやり方があったならば、それを製品に対する欠陥としてリストします。そこでパスを修正すると、ビルドの問題が修正されました。


2

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

同様の問題がありました。提案されたすべてのソリューションはこの問題の回避策ですが、エラーの原因を解決していません。tfsビルドサーバーを使用している場合は、@ giamminソリューションを適用しないでください。これは、パブリッシュ機能がクラッシュするためです。@ cat5devソリューション-問題を解決しますが、ソースを解決しません。

ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xaml これらのビルドテンプレートがVS2012用に作成され、$(VisualStudioVersion)が11.0に設定されているように、VS2012のビルドプロセステンプレートを使用していることはほぼ間違いありません。

あなたはVS2013のビルドプロセステンプレートを使用する必要があります ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml 12.0 $(VisualStudioVersion)セットを持っています

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


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

私の場合、.csprojファイルを開いて行の下にコメントし、トリックを行いました

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

私の問題は異なるかもしれませんが、ここで引きずられていますが、これは誰かを助けるかもしれません。

私は自分のソリューションから1つのWebプロジェクトを選択し、それを問題を解決しているスタンドアロンのプロジェクトとして開こうとしました。


2

MSBuildの正しいバージョンを使用してください。環境変数を次のように設定します。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin

これはVS 2019プロジェクトでも機能します

以前は、 C:\Windows\Microsoft.NET\Framework\v4.0.30319


「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild」ではなく、「C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ MSBuild.exe」を使用しました。 exe "とその機能
ELKALAKHI Mohammed

ええ、私はSSDTプロジェクト(.sqlproj)を使用しており、プロジェクトファイルにVisualStudioVersion = 14.0を使用しています。ターゲットの環境変数を神に設定するコア3.1をインストールしました。提案したフォルダーでmsbuildを使用するのは魅力的でした!
マシューベック

1

私の場合、開発環境はVS2013で、TFS 2010を使用しています。ビルドは.NET 4.5.1を対象にしています。CIの自動ビルドをセットアップしていました。プロパティグループを完全に削除したり、一部の行を置き換えたりするなど、上記の回避策を試したときはいつでも、ビルドはTFSで発生していましたが、azureへのパブリッシュは「MSDeploy」または時々別のエラーで失敗していました。両方を同時に達成することはできませんでした。

したがって、最後に、問題を解決するためにMSBuild引数を渡す必要がありました。

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

それは私のために働いた。


1

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


または、Microsoft.WebApplication.targetsファイルのみをVisual Studio 2013がインストールされている場所からコピーします。
ThatBlairGuy 2016年

0

見つけるだろう

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

このエラーが発生しているcsprojファイル内。これをcsprojから削除してビルドします。


0

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


0

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

その特定のバージョン(v11.0)のローカルフォルダーをビルドサーバーにコピーしてしまいました。


0

上記の解決策をすべて試しましたが、まだうまくいきませんでした。それを修正するためにビルドサーバーにVisual Studioをインストールする人がいると聞いていましたが、5 GBの空き容量しかなかったので、C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudioをビルドサーバーにコピーして、1日呼び出しました。その後、チームシティ9.xとビジュアルスタジオ2013を使用して作業を開始しました。


0

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

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


0

ローカルPCのWebApplicationsフォルダーが見つからず、2012を使用していたときのようにVisual Studio 2017でインストールできませんでした。


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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.