Blazor WebAssembly アプリの発行時に、"ランタイムの再リンク" を抑止する


背景

「.NET WebAssemblyビルドツール」をインストールすると、Blazor WebAssemblyアプリを Release 構成で発行する際に、"ランタイムの再リンク" が自動的に実行されます。

ランタイムの再リンクは、未使用のランタイムコードを切り捨てることで、"dotnet.wasm" のサイズを縮小します。
このサイズ削減は、Blazor WebAssemblyアプリのダウンロード速度に貢献します。

詳しくは、以下のリンクもご参照ください。

ただし、ランタイムの再リンクは発行に少し時間がかかります

もちろん、ほとんどの開発者にとって、これは問題ではありません。
しかし、稀にランタイムの再リンクに時間がかかると、特に発行処理に関わる問題を調査する際に、開発者を悩ませることがあります。

解決策

幸いなことに、手動でランタイムの再リンクを抑制することができます

必要なのは、MSBuildプロパティの "UsingBrowserRuntimeWorkload "を "false"に指定することだけです。

例えば、dotnet publishコマンドのコマンドライン引数でこれを行うことができます。

dotnet publish -c:Release -p:UsingBrowserRuntimeWorkload=false

このコマンドは 「.NET WebAssemblyビルドツール」がインストールされていないときと同じように動作するため、ランタイムの再リンクを行う場合よりも早く発行処理が終了します。

制限事項

"UsingBrowserRuntimeWorkload" MSBuild プロパティを "false" に設定することは、Blazor WebAssembly プロジェクトが "WebAssembly のネイティブの依存関係" 機能を使用していない場合のみ有効です。

Blazor WebAssembly プロジェクトが "WebAssembly のネイティブの依存関係" 機能に依存している場合、ビルドと公開処理は失敗するはずです。