先週Windows11のVisual Studio 2022を最新バージョン(17.2.4)にアップデートしたら、Blazor WebAsssemblyのアプリケーションをPublishするときに以下のようなエラーが出るようになってしまいました。
PS C:\Users\ichiro\Projects\MyApp> dotnet publish -c Release
.....
(略)
.....
Optimizing dotnet.wasm ...
Compressing Blazor WebAssembly publish artifacts. This may take a while...
C:\Program Files\dotnet\sdk\6.0.301\Sdks\Microsoft.NET.Sdk.BlazorWebAssembly\targets\Microsoft.NET.Sdk.BlazorWebAssembly.6_0.targets(614,5): error MSB6006: "C:\Program Files\dotnet" はコード 1 を伴って終了しました。 [C:\Users\ichiro\Projects\MyApp\MyApp\MyApp.csproj]
以上のように「Compressing Blazor WebAssembly publish artifacts.」のところでエラー止まってしまいます。
おそらく.NET SDKのバグと思われるので、しばらく経てば修正されるはずですが、急ぎの場合は何とかしないとなりません。そこで、今回は暫定的にでも解決する方法を、今後同様の事態になったときのためにまとめておきます。
解決方法
今回は使用する「.NET SDK」のバージョンを1つ前のものに指定したら解決しました(6.0.301 -> 6.0.300)。
手順
1. インストールされている.NET SDKのバージョン確認
以下のように確認すると、最新のバージョン(ここでは6.0.301)しかインストールされていないので、次の手順で1つ前のバージョンをインストールします。
PS C:\Users\ichiro\Projects\MyApp> dotnet --list-sdks
6.0.301 [C:\Program Files\dotnet\sdk]
2. 1つ前のバージョンの.NET SDKのインストール
.NET SDKの以下のサイトからダウンロードできます。
https://dotnet.microsoft.com/ja-jp/download
今回は「.NET 6.0」を使用しているので、以下のサイトからダウンロードします。
https://dotnet.microsoft.com/ja-jp/download/dotnet/6.0
このサイトから以下のように「SDK 6.0.300」を探してダウンロードします(今回はWindowsのx64をダウンロードしました)。
インストーラーを実行して以下のような画面に従いインストールします。
3. 追加した.NET SDKを確認
1.と同じコマンドを実行すると、以下のように「6.0.300」が追加されたのが確認できます。
PS C:\Users\ichiro\Projects\MyApp> dotnet --list-sdks
6.0.300 [C:\Program Files\dotnet\sdk]
6.0.301 [C:\Program Files\dotnet\sdk]
4. 使用するSDKのバージョン指定
プロジェクトのルートフォルダー(ここでは、C:\Users\ichiro\Projects\MyApp)にglobal.json
というファイルを作成し、以下の内容を書き込み保存します。
{
"sdk": {
"version": "6.0.300"
}
}
このようにglobal.jsonにより、.NETのコマンドラインで使うSDKのバージョンを指定できます。詳しくは以下のサイトを参照してください。
https://docs.microsoft.com/ja-jp/dotnet/core/tools/global-json
5. アプリケーションのpublishの再実行
これで再度publishを実行すれば、今度は正常にできていた1つ前のSDK「6.0.300」でpublishが行われ無事に実行できました。
修正されたSDKがリリースされたら、global.json
は削除します。