はじめに
Windows Driver Kit (WDK) を使ったビルドをしようとしたときにはまったのでその回避方法です。
エラー内容
MSBuild.exe
を使ってビルドしようとすると以下のエラーになります。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(379,5):
error MSB8020:
The build tools for WindowsUserModeDriver10.0 (Platform Toolset = 'WindowsUserModeDriver10.0') cannot be found.
To build using the WindowsUserModeDriver10.0 build tools, please install WindowsUserModeDriver10.0 build tools.
Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu
or right-click the solution, and then selecting "Retarget solution". [D:\a\user\user\repository\example.vcxproj]
どうするか
runs-on:
で指定しているイメージに windows-latest
や windows-2019
を指定している場合は windows-2016
に変更します。
なぜこれで回避できるのか
GitHub Actions は Azure Pipelines と同じイメージを使っているようで1 microsoft/azure-pipelines-image-generation
リポジトリにヒントがあります。
https://github.com/microsoft/azure-pipelines-image-generation/blob/568bfe035a0583e89ac3f27e1fd2b3be93caa42f/images/win/scripts/Installers/Vs2019/Install-WDK.ps1#L33-L54
VS 2019 のインストールスクリプトで WDK.vsix のインストールがコメントアウトされており、当然使えるわけがありません。
これは Update Windows Driver Kit to 1903 に起因する問題のようです。
なので VS 2017 を使っている windows-2016
のイメージではこの問題は起こりません。
windows-2019 でも動かしたい
windows-2019
で解決するには WDK.vsix をインストールできれば良いと思うのですがうまくいきませんでした。
Visual Studio 2019 - WDK for Windows 10, version 1903 · Issue #2994 · appveyor/ci を参考に以下のコマンドを実行させてみましたが、エラーが発生します。
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\VSIXInstaller.exe" /a /f /sp /q /skuName:Enterprise /skuVersion:16.3.29318.209 "C:\Program Files (x86)\Windows Kits\10\Vsix\WDK.vsix"
Process completed with exit code 2003.
vsix - VSIXInstaller.exe exit code documentation - Stack Overflow によるとエラーコード 2003
は NoApplicableSKUsException
とのことです。
おわりに
問題は認識されているようなのでそのうち解決するとは思いますが、インストールの方法をご存知の方がいればここなり Microsoft のリポジトリなりにフィードバックお願いします。
-
GitHub Actions は Azure Pipelines のフォーク ↩