1. ホーム
  2. msbuild

[解決済み] MSBuild はなぜ c:♪Program Files (x86)♪Microsoft.Cpp.Default.props のために C:♪Program Files (x86)♪MSBuild を探すのでしょうか?( エラー MSB4019)

2022-07-14 06:12:42

質問

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.

  • msbuildの場所 c:\Program File (x86)⇄ MSBuild
  • HKLM@SOFTWARE@Wow6432Node@Microsoft¥MSBuild¥ToolVersions¥V4.0 VCTargetsPath set to $(MSBuildExtensionsPath32)¥Microsoft.Cpp¥V4.0 ¥Microsoft¥MSBuild¥V4.0
  • msbuild /verbosity:diagを実行すると、MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath set as good systemと表示されます。 ビルド開始時の環境
  • MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPathをシェルで環境変数として設定しても、それらが ビルド開始時の環境

修正方法

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

MSBuildExtensionsPath32 が正しく設定されていないようで、MSBuildExtensionsPath を設定しても役に立ちません

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

この変数の適切な設定をブロックしているものについて、何か思い当たることがあれば教えてください。

どのように解決するのですか?

MS が規定した順序に従わなかった人のために ( Xvの回答 を参照)、それでも問題を解決することができます。

MSBuild は VCTargetsPath を使用してデフォルトの cpp プロパティを検索しますが、レジストリにこの String Value がないため検索できません。

文字列の値を確認する

  • regedit を起動します。
  • ナビゲータから HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • 検査する VCTargetsPath キーになります。 値は = "でなければなりません。 $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\ "です。

修正するには

  • regedit ナビゲーターを起動し HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • 文字列の値を追加します。 VCTargetsPath
  • 値を " に設定します。 $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\ "です。

注意 HKLMHKEY_LOCAL_MACHINE .