読者です 読者をやめる 読者になる 読者になる

メモ:ビルドサーバーに Windows SDK7.1 の後 Windows SDK 7.0 を入れると、MSBuild で AL.exe が無いと怒られる

ここらへんと同じ症状です。
.net - Running MSBuild fails to read SDKToolsPath - Stack Overflow
Task could not find "AL.exe" でエラーが出た時の対応 - dunno logs


Windows SDK7.1 はこちら
Download Microsoft Windows SDK for Windows 7 and .NET Framework 4 from Official Microsoft Download Center
Windows SDK7.0 はこちら
Download Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 from Official Microsoft Download Center



レジストリの HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0 の各値は、v7.0A のインストールパスを指しています。
ビルドサーバーなので、VS はインストールしていません。(7.0A はインストール出来ない)
なので、v7.0A のパスの AL.exe を使おうとして怒られます。
しかし、HKLM\SOFTWARE\Microsoft SDKs\Windows の CurrentVersion が 7.1 になっていると、7.1 の AL.exe を見に行ってくれて問題無く動作しそうです。
※公式情報では無いので、自己責任で


今回発生した環境は、

  • 当初、7.1 SDK をインストールしていた環境で、エラー無く動作していた。
  • 7.0 SDK を入れてから AL.exe でこけるようになった。
  • Windows SDK Configuration Tool では、v7.0 が選ばれていて v7.1 に変えようとすると VS が入ってないから変更出来ないエラーが起きた。
    • 多分ここらへんを読んで、コマンドラインからパラメータを渡したら変更出来そう。

Windows SDK Configuration Tool May Report an Error When OS Display Format is not English - Microsoft Windows SDK Blog - Site Home - MSDN Blogs

  • 結局 7.1 SDK を修復インストールして解決。