Nuget で入手したライブラリを使用するプロジェクトのビルド時に MSB3086 のエラーが発生

こんにちは、Visual Studio サポート チームです。
今回は Nuget で入手したライブラリを使用するプロジェクトのビルド時に MSB3086 のエラーが発生するケースについて、対象方法と合わせてご紹介いたします。

 

Nuget について

Nuget は .NET Framework をベースとした開発環境に対応したパッケージ マネージャでオープンソース(OSS)製品です。Nuget パッケージ マネージャは、Visual Studio 統合開発環境のエクステンションとして利用することが可能であり、開発者はこのパッケージ マネージャを使用して「Nuget gallery」に公開されているソフトウェアやライブラリを利用することができます。

 

現象

Nuget で入手したパッケージを含むプロジェクトをビルドした際に、以下のように MSB3086 のエラーが発生する場合があります。

<エラー例>
targets(2863,5): error MSB3086: タスクは SdkToolsPath "" またはレジストリ キー "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86" を使用して "AL.exe"を見つけられませんでした。SdkToolsPath が設定されていること、SdkToolsPath の下の適切なプロセッサ固有の場所にツールが存在すること、および Microsoft Windows SDK がインストールされていることを確認してください。

 

原因

対象の Nuget パッケージが必要とする SDK ツールが開発環境にインストールされていない場合に、このようなエラーが発生します。上記のエラー例の場合は、対象の開発環境に Windows 8.0 SDK に付属のバージョンの .NET Framework SDK が不足しているためにエラーとなっています。

 

対処策

Nuget パッケージのビルドに必要な SDKツールを開発環境に個別にインストールします。

例えば、上記のエラー例では、SDKツールのパスとして設定されている場所から AL.exe を見つけることができないため、ビルド エラーが発生していると判断できます。

エラーメッセージに含まれる "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86" は、必須となるSDK ツールに関するレジストリ情報となります。このレジストリ値の "Microsoft SDKs\Windows\v8.0A" と記載されている部分は、Windows 8 用の Windows SDK を、また、"WinSDK-NetFx40Tools-x86" は、Windows 8 用の Windows SDK に付属している .NET Framework 4.5 SDK を指しています。

これらの情報から、当該の環境には Windows 8 用の SDKに含まれる .NET Framework 4.5 SDK がインストールされていない可能性が考えられます。この場合、Windows 8 用の SDK に含まれる .NET Framework 4.5 SDK インストールすることで、エラーを回避することが可能です。

 

補足:Windows SDK/ .NET Framework SDKのバージョンについて

SDK ツール パスのレジストリ情報に対応する Windows SDK、および .NET Framework SDK のバージョンは以下のとおりです。

 

[レジストリ情報に含まれるバージョン] [Windows SDK/ .NET Framework SDK のバージョン]

============================================================

Microsoft SDKs\Windows\v10.0A Windows 10 用の Windows SDK / .NET Framework 4.6.2 SDK (現時点でのバージョン 10.0.14393.0 では、.NET Framework 4.6.2 SDK のインストールが可能)

Microsoft SDKs\Windows\v8.1A Windows 8.1 用の Windows SDK / .NET Framework 4.5.1 SDK

Microsoft SDKs\Windows\v8.0A Windows 8 用の Windows SDK / .NET Framework 4.5 SDK

Microsoft SDKs\Windows\v7.1A Windows 7 用の Windows SDK /.NET Framework 4.0 SDK

Microsoft SDKs\Windows\v7.0A Windows 7 用の Windows SDK / .NET Framework 3.5 SDK

 

Windows SDK の詳細については、以下の Platform SDK (Windows SDK) サポート チームにも情報がありますので、あわせてご参照ください。

 

入手可能な Windows SDK について

https://blogs.msdn.microsoft.com/japan\_platform\_sdkwindows\_sdk\_support\_team\_blog/2011/04/21/windows-sdk/