ASP.NET Core の静的 Web アセットとは何ですか? 質問する

ASP.NET Core の静的 Web アセットとは何ですか? 質問する

そこには多くの隠された魔法が存在しますHostBuilder.ConfigureWebHostDefaults()(そしてそれは最終的にConfigureWebDefaults)。これについて文書が見つからないので、もっとよく理解したいと思います。

このコード静的ファイルを読み込んでいるようです。静的 Web アセットとは何ですか? なぜ必要なのですか? これは、静的アセットを Blazor のライブラリに埋め込むことと関係がありますか?

builder.ConfigureAppConfiguration((ctx, cb) =>
{
    if (ctx.HostingEnvironment.IsDevelopment())
    {
        StaticWebAssetsLoader.UseStaticWebAssets(ctx.HostingEnvironment, ctx.Configuration);
    }
});

ベストアンサー1

静的ウェブアセットは、Razor クラス ライブラリ (RCL):

RCL には、RCL を使用するアプリが参照できる付随する静的アセットが必要になる場合があります。ASP.NET Core では、使用するアプリで使用できる静的アセットを含む RCL を作成できます。

UseStaticWebAssets追加の挿入ファイルプロバイダー(例:StaticWebAssetsFileProvider)、マニフェスト ファイル ({environment.ApplicationName}.StaticWebAssets.xml経由で設定されていない場合IConfiguration) を使用して、パスからベース パスへのマッピングのリストを決定します。

たとえば、ASP.NET Core Identity UI RCL を使用する場合、アプリのマニフェスト ファイルは次のようになります。

<StaticWebAssets Version="1.0">
    <ContentRoot BasePath="/Identity" Path="\path\to\.nuget\packages\microsoft.aspnetcore.identity.ui\3.0.0\staticwebassets\V4" />
</StaticWebAssets>

結局、CompositeFileProvider設定されているIWebHostEnvironment.WebRootFileProviderこの複合プロバイダーは次の 2 つのことを行います。

  1. wwwroot/静的ファイルを通常どおり処理します(デフォルト構成を想定)。
  2. から要求されたすべてのファイルを、wwwroot/IdentityIdentity UI の抽出された NuGet パッケージ コンテンツ フォルダーに委任します。

質問のコードスニペットが示すように、これは環境で実行されている場合にのみ発生しますDevelopment。アプリが出版された、問題のファイルはwwwroot、アプリの一部であるかのようにフォルダーにコピーされます。

おすすめ記事