web-dev-qa-db-ja.com

MSBuildがc:\ Program Files(x86)\ MSBuildではなくMicrosoft.Cpp.Default.propsのC:\を検索するのはなぜですか? (エラーMSB4019)

Msbuildを実行してvc2010プロジェクトをビルドすると、次のエラーが表示されます。

error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. 
Confirm that the path in the <Import> declaration is correct, and that the file exists 
on disk.
  • c:\ Program File(x86)\ MSBuildにあるmsbuild
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolVersions\V4.0 VCTargetsPathを$(MSBuildExtensionsPath32)\ Microsoft.Cpp\v4.0 \に設定
  • msbuild/verbosity:diagを実行すると、MSBuildExtensionsPath32、MSBuildExtensionsPath64、MSBuildExtensionsPathがビルド開始時の環境
  • シェルで環境変数として設定されたMSBuildExtensionsPath32、MSBuildExtensionsPath64、MSBuildExtensionsPathを設定しても、ビルド開始時の環境として表示されません。

試行した修正

  • .net 4.5のアンインストール、.net 4.0の修復
  • システム変数にMSBuildExtensionsPath32、MSBuildExtensionsPath64、MSBuildExtensionsPathを設定します。

MSBuildExtensionsPath32が適切に設定されておらず、MSBuildExtensionsPathを設定しても役に立たないようです

SET MSBuildExtensionsPath="C:\Program Files\MSBuild"

この変数の適切な設定を妨げているものがあれば、私に知らせてください。

117
Peter Kahn

MSの禁止された順序に従わなかった人( Xvの答え を参照)でも、問題を解決できます。

MSBuildはVCTargetsPathを使用してデフォルトのcppプロパティを見つけますが、レジストリにこの文字列値がないため、できません。

文字列値を確認してください

  • Regeditを起動します
  • HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0へのナビゲーター
  • VCTargetsPathキーを調べます。値は「$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\」である必要があります

修正するには

  • Regedit NavigatorをHKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0に起動します
  • 文字列値を追加VCTargetsPath
  • 値を「$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\」に設定します

注:HKLMHKEY_LOCAL_MACHINEを表します。

47
Peter Kahn

MSBuildを呼び出すコマンドラインツールを使用してcocos2d-xアプリケーションを公開すると、この問題が発生しました。 Win 7 64ビット、VS2013 Express、cocos2d-xバージョン3.3、.NET Framework 4.5をインストールして使用しています。

Cocos.py publishコマンドを実行する前に以下を設定することで問題を修正しました。

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
69
Jeff

私は最近同じ問題を抱えており、異なるパッケージを異なる順序でインストールした後、非常に面倒になりました。その後、私はこのレポを見つけました- https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

ほとんどのノードモジュールのコンパイルに必要なPythonおよびVSビルドツールをインストールします。うまくいきました!

26
Luke

インストール Windows SDK 7.1用Microsoft Visual C++ 2010 Service Pack 1コンパイラー更新 Windows7 x64でビルドしていたMSB4019エラーを修正しました。

その更新のReadmeには、推奨される順序は

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Windows SDK 7.1用のVisual C++ 2010 SP1コンパイラー更新
12
xverges

64ビットシステムでは、MSBuildはデフォルトで次のプロパティになります(C:はSystemDriveです)。

MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild

そうでない場合は、カスタムサードパーティのオーバーライドターゲットがインストールされているか、MSBuildインストールが破損していることを意味します。

試すべきこと:

  • .NETインストールの修復
  • 最新のVisual Studio Service Packを適用する
  • 上記のようにMSBuildExtensionsPathを手動で設定します(64ビットマシンのx86部分に注意してください)
6
KMoraz

Windows 10上のVisual Studio 2017および2019

ここでの回答の多くは、Visual Studioの古いバージョンに適用されます。 Visual Studio 2017 Communityバージョンを使用している場合、私にとってうまくいったのは、VCTargetsPathという環境変数を設定し、

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets

Visual Studio 2019 Communityバージョンを使用している場合、

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160

ここでの他の答えは、この変数をc:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140に設定しましたが、Visual Studioのインストールでは、MSBuildフォルダーにMicrosoft.Cppというフォルダーがありませんでした。そのため、上記のパスがVisual Studio 2017のコミュニティバージョン用であるという事実と同様に、これにも留意してください。

また、Visual Studio 2017 Communityバージョンを使用している場合は、環境変数のMSBuildパスがMSBuildの正しいバージョンを指していることを確認してください。

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

Visual Studio 2019 Communityバージョンを使用している場合、

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
5
Chris Gong

Visual Studio 2015エディションでこの問題が発生しました。 cmakeを使用してプロジェクトを生成すると、このエラーが発生しました。

エラーMSB4019:インポートされたプロジェクト「D:\ Microsoft.Cpp.Default.props」が見つかりませんでした

文字列を追加して修正しました

VCTargetsPath

価値あり

$(MSBuildExtensionsPath32)\ Microsoft.Cpp\v4.0\V140

レジストリパス内

HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0

4
Sjs

パスを次のように設定する以外、私にとっては何も機能しませんでした:

C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0
3
sowmiya lakshmi

MSBuildキーのレジストリエントリは正常に機能しました。実行するMSBuildのバージョンに応じて、64ビットまたは32ビットのブランチに対して実行する必要があることを覚えておくことが重要です。 MSBuildの異なるバージョンで問題が発生する可能性があるため、環境変数の使用はお勧めしません。

このレジストリファイルは、両方の場合にそれを修正します。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
3

他のツールと頻繁にバンドルされる独立したビルドツールのMSBuild。 .NET(古いバージョン)、Visual Studio(新しいバージョン)、またはTeam Foundationビルドでコンピューターにインストールされている場合があります。

MSBuildには、それを使用するVisual StudioまたはTFSのバージョンと、ソースコードがコンパイルされる.NETのバージョンに一致する構成ファイル、コンパイラーなど(ToolSet)が必要です。

MSBuildのインストール方法に応じて、構成ファイルはこれらのパスの1つ以上にある場合があります。

  • C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0 \
  • C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V120 \
  • C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V140 \

他の回答で説明されているように、レジストリ項目または環境変数ポイントは、ツールセットパスを指している必要があります。

  • HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0の下のVCTargetsPathキー
  • VCTargetsPath環境変数。

場合によっては、ツールのインストールなどの操作により、レジストリや環境変数が誤って設定されたままになることがあります。他の答えは、それらを修正するためのすべてのバリエーションです。

追加する必要があるのは、後続の\を中断したときに環境変数が機能しなかったことだけです

3
mmesser314

インストール Windows SDK 7.1用Microsoft Visual C++ 2010 Service Pack 1コンパイラー更新 私のために働いた。ただし、VS 2010およびVS 2010 SP1が既にインストールされているため、更新プログラムで問題が発生しました。上記の Xv で述べたように、readme.htmファイルには、「既知の問題」セクションのインストールに関する最も一般的な問題の解決策が含まれています。一部のインストールではレジストリに書き込むため、トラブルシューティングを試行するたびにreadme.htmの指示に従い、マシンを再起動します。

2
heatfan

ハドソンの仕事に環境変数としてVCTargetsPath={c:\...}を追加しました。

0
user2818782

VS 17のMSBuildで同じ問題に直面していました

次の手順を適用することでこれを解決しました。

  • 私の場合、Microsoft.Cpp.Default.propsファイルはC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargetsにあったので、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0の下のレジストリに値C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargetsVCTragetsPath文字列を作成しました

  • また、Jenkinsを管理者ユーザーとして実行しました

これで問題が解決しました。

0
Hemant

私はVS2017環境でこれを見ています。ビルドスクリプトは最初にVsDevCmd.batを呼び出し、この問題を解決するために、VCTargetsPathの後、MSBuildを呼び出す前に、VsDevCmd環境変数を設定します。

set VCTargetsPath=%VCIDEInstallDir%VCTargets
0
Hugh

上記のVS2017/2019についてのChris Gongの回答に追加します(まだコメントの許可がありません)。

Visual Studio全体ではなくVS 2019 Build Toolsがインストールされている場合、ファイルパスはわずかに異なります。 VCTargetsPathは

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\

終了するバックスラッシュにも注意してください-少なくとも私の場合は必要です(TFS2017、VS2019 Build tools)。 PATHエントリへの対応する変更も。

0
Lars V

これは、インストールされているMSBuildツールセットとレジストリ設定の不一致が原因です。次の1つ以上を実行した場合に発生する可能性があります。

  • 複数のVisual Studioバージョンを間違った順序でインストールする
  • Visual Studioの1つ以上のバージョンをアンインストールします
  • Visual Studioインストールにレジストリの変更または修正を手動で行う

安全で信頼できる唯一の解決策は、OSを再インストールすることです。プロジェクトのビルドに複数のバージョンのVisual Studioが必要な場合は、最初に最も古いバージョンをインストールします。次に、1つのツールを使用してビルドできるようにコードを修正します。そうしないと、あなたや同僚がすぐに同じ混乱に陥ります。

これが選択肢ではない場合は、最初に https://stackoverflow.com/a/41786593/2279059 を読んで、問題とさまざまな「解決策」が実際に何をしているのかを理解してください。次に、Visual Studioのバージョンとセットアップに応じて、他の回答またはそれらのバリエーションのいずれかが最終的に役立つ場合があります。

さらにいくつかのヒント:

0
Florian Winter

見つかったMSBuild.exeファイルのC:\ Windows\Microsoft.NETフォルダーを再帰的に掘り下げた後、MSBuildを%PATH%に配置するビルドスクリプトを記述することで、このエラーに遭遇しました。最後に見つかったヒットは、パスに置かれたディレクトリでした。 dirコマンドはFrameworkの後にFramework64フォルダーにヒットするので、パスに64ビットMSBuildのいずれかを配置していました。 Visual Studio 2010ソリューションを構築しようとして、検索文字列をC:\Windows\Microsoft.NETからC:\Windows\Microsoft.NET\Frameworkに変更して、32ビットMSBuild.exeを作成しようとしていました。これで、ソリューションファイルがビルドされます。

0
jxramos

レコードの場合、ファイルMicrosoft.Cpp.Default.propsはenv var VCTargetsPathを変更し、その変数の以降の使用法を誤ったものにすることができます。私はその問題を抱えており、VCTargetsPath10VCTargetsPath11VCTargetsPathと同じ値に設定することで解決しました。

これは、使用しているVSバージョンに応じて調整する必要があります。

0
STM