TeamCity CIビルドサーバーに問題があり、コンパイル中に次のエラーが発生します。
C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342、9):エラーMSB3086:タスクは、SdkToolsPath ""またはレジストリキー "HKEY_LOCAL_MACHINE \"を使用して "AL.exe"を見つけることができませんでしたSOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A」。 SdkToolsPathが設定され、ツールがSdkToolsPathの下の正しいプロセッサー固有の場所に存在し、Microsoft Windows SDKがインストールされていることを確認してください。
this one など、1年前に人々が.NET 3.5にアップグレードしていたときの同様のレポートを見つけました。その場合、最新のSDKをインストールすることで問題は解決しましたが、ビルドサーバーに最新のSDK( Microsoft Windows SDK for Windows 7および.NET Framework 4 )を既にインストールしています。 MSBuildツールはすべて、サーバー上のフォルダーにあります。
C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319
aL.exeが存在する
C:\ Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0ツール
ただし、エラーメッセージに記載されているレジストリキーは存在しません。そのため、MSBuildのインストール/構成に問題があるようです。このエラーは、AL.exeを必要とするリソースが埋め込まれているプロジェクトでのみ発生します。
最新のSDKをインストールしたら(v7.1を想定しています)
- [スタート]メニューから[Microsoft Windows SDK v7.1]に移動します
- 「Windows SDK 7.1コマンドプロンプト」を選択して入力します
cdセットアップ
WindowsSdkVer -version:v7.1
これにより、msbuildは、恐ろしいレジストリ編集を行うことなく、そのバージョンのツールを使用するようになります。
質問はかなり古いものの、Google検索結果の一番上に表示されているので、ソリューションも投稿することにしました。 Windows Server 2016およびWindows 10 ProでのTeamCityのセットアップ中に、同じ問題に陥りました。
Microsoft Build Tools 2015 および Windows 10 SDK (.NET 4.6.2のツールのみ)をインストールしましたが、質問からエラーが発生しました。
不足しているパズルは、環境変数TargetFrameworkSDKToolsDirectory=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools
を設定することでした。
環境変数を設定すると、MSBuildはAL.exeを含む必要なすべてのツールを解決でき、ビルドが成功しました。
レジストリに値を設定することで同じことが達成できるかどうかを教えてください。ただし、この場合、環境変数も非常にうまく機能し、VSのインストールは不要です。
また、msbuildを更新してV7.1 SDK値を指すようにするには、次のレジストリ修正を適用する必要があります。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0]
"MSBuildToolsPath"="C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\"
"MSBuildToolsRoot"="C:\\WINDOWS\\Microsoft.NET\\Framework\\"
"FrameworkSDKRoot"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1@InstallationFolder)"
"MSBuildRuntimeVersion"="4.0.30319"
"SDK40ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\WinSDK-NetFx40Tools-x86@InstallationFolder)"
"SDK35ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\WinSDKNetFx35Tools@InstallationFolder)"
"MSBuildToolsPath32"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0@MSBuildToolsPath)"
私はそこで同じ問題を抱えていました。これに対する私の簡単な答えがあります。
TeamCityサーバーにMicrosoft Windows SDK 7.1をインストールした後。
Regeditでこのキーを変更
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath
に
$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools-x86@InstallationFolder)
シンプルで効果的な修正があります。
問題は、Visual Studioで提供されるツールのバージョンがバージョン7.0Aであるのに対し、Windows SDKで提供されるバージョンはバージョン7.1であるということです。それはすべて非常にうまくいきますが、MSBuild.exeはまだ存在しないバージョン7.0Aのレジストリキーを探しています。これはバグでなければなりません!
私のレジストリを見ると、V6.0およびV7.1のすべての情報が存在し、正しいです。したがって、私の解決策は簡単です。 7.1キーのエイリアスを作成するレジストリリンクを作成しました。
組み込みツールを使用してレジストリリンクを作成することはできないため、 here から「regln」という小さなユーティリティをダウンロードしました。
C:> regln-x86.exe "\ Registry\Machine\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" "\ Registry\Machine\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1"
仕事完了。 MSBuildはTeamCityサーバーで完全に動作するようになりました。
Windows 10で新しいビルドサーバーをセットアップする同じ問題に遭遇しました。最新の(当時) Windows 7および.NET Framework 4用のMicrosoft Windows SDK を見つけてインストールし、問題を解決しました。
システム環境を追加します。変数TargetFrameworkSDKToolsDirectory
このような:
TargetFrameworkSDKToolsDirectory = C:\ Program Files(x86)\ Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools
vSを再起動する
最近、.Net 4.0ビルドを機能させるためにこの問題が発生しました。 al.exeの場所は、.Net 4.0に付属する元のMSBuildの外観と、.NET 4.0用のVisual Studio SDK(後でリリースされる)の間で変更されていることがわかりました。
使用可能なSDKツールのスタンドアロンインストールは、成功せずに既にインストールしたもの(言及したもの)のみであるため、考えられる唯一のソリューションは、ビルドエージェントにVisual Studioをインストールすることでした。 Visual Studio 2010 Express(インストールをできるだけ軽量に保つため)をそこに置いて、問題はなくなりました。きれいなソリューションではありませんが、うまくいきました-VS2010をインストールすると、MSBuildが探している特定のバージョンのSDKツールもインストールされます。
これは実際には発生しないはずの問題ですが、MSBuildでツールの正しい場所を確認したり、レジストリをハックしたりする方法はないようです。