2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-19

背景

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

".NET WebAssembly build tools" のインストールオプション

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

.NET WebAssemblyビルドツール導入前後の「dotnet.wasm」サイズ

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

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

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

解決策

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

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

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

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

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

"-p:UsingBrowserRuntimeWorkload=false" を指定した場合としなかった場合の発行処理速度の比較

制限事項

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

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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?