1. ホーム
  2. .net

[解決済み] MSBuildの実行でSDKToolsPathの読み込みに失敗する

2022-06-24 07:02:16

質問

こんにちは。VS2008 とそれに関連するツールでコンパイルする際に、.Net 2.0 ベースのウェブサイトを適切に構築していた NAnt スクリプトを実行するのに少し問題があります。 最近、すべてのプロジェクト/ソリューション ファイルを VS2010 にアップグレードしたところ、次のようなエラーでビルドが失敗するようになりました。

[exec] C:\WindowsMicrosoft.NETFramework64v4.0.30319Microsoft.Common.targets(2249,9): error MSB3086: Task could not find sgen.exe" using the S dkToolsPath "" またはレジストリ キー HKEY_LOCAL_MACHINE (ソフトウエア) SDKsWindowsv7.0A" です。Make sure the SdkToolsPathが設定され、ツールが正しいプロセッサに存在することを確認する。 が正しいプロセッサに存在することを確認します。 の下にあるプロセッサ固有の場所に存在することを確認する。 SdkToolsPathが設定され、ツールがSdkToolsPathの下のプロセッサ固有の正しい場所に存在すること、およびMicrosoft Windows SDKがインストールされていること

現在、Windows SDK の以前のバージョン (.Net 3.5) がビルド サーバーにインストールされており、完全な .Net 4.0 フレームワークがインストールされていますが、Windows SDK の .Net 4.0 固有のバージョンに遭遇したことはありません。

少しの実験と研究の後、最終的に、新しい環境変数 "SDKToolsPath" を設定し、それを Windows 6.0 SDK フォルダーにある sgen.exe のコピーに向けました。 これは同じエラーを生成しましたが、SDKToolsPath 環境変数が設定されているにもかかわらず (コマンド ラインでそれを "echo" でき、それが期待される値を持つことを確認)、エラー メッセージはそれが読み込まれていないことを示したようです (空の引用符に注目してください)。

私が見つけた情報のほとんどは、.Net 3.5 (またはそれ以前) 固有のものでした。 4.0 に関連するものはまだあまりありません。 エラー コード MSB3086 を検索しても、役に立つものは何も見つかりませんでした。 これが何であるか、何か見当がつきますか?

スコット

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

この問題を解決するために、思い切って VS 2010 をビルド サーバーにインストールする必要がありました。私が見る限り、MSDN のどこにも Windows SDK の 7.0A バージョンがありません。しかし、VS 2010 をインストールすると、Program FilesMicrosoft SDKsWindows に 7.0A regkey と 7.0A folder が作成され、インストールされるようです。