Muh*_*eed 11 asp.net-core-mvc asp.net-core blazor
在HostBuilder.ConfigureWebHostDefaults()
(最终调用ConfigureWebDefaults
)中有很多隐藏的魔法。我想更好地理解它,因为我找不到关于它的文档。
这段代码似乎正在加载一些静态文件。什么是静态网络资产,我们为什么需要它们?这与将静态资产嵌入 Blazor 的库有关吗?
builder.ConfigureAppConfiguration((ctx, cb) =>
{
if (ctx.HostingEnvironment.IsDevelopment())
{
StaticWebAssetsLoader.UseStaticWebAssets(ctx.HostingEnvironment, ctx.Configuration);
}
});
Run Code Online (Sandbox Code Playgroud)
Kir*_*kin 18
静态 Web 资产是从Razor 类库 (RCL) 中提供的静态文件:
RCL 可能需要可以由 RCL 的消费应用程序引用的配套静态资产。ASP.NET Core 允许创建包含可用于消费应用程序的静态资产的 RCL。
UseStaticWebAssets
插入其他文件提供程序( 的实例StaticWebAssetsFileProvider
),使用清单文件({environment.ApplicationName}.StaticWebAssets.xml
如果未设置 via 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>
Run Code Online (Sandbox Code Playgroud)
这一切都结束了一个CompositeFileProvider
为是集IWebHostEnvironment.WebRootFileProvider
。这个复合提供者做了两件事:
wwwroot/
像往常一样处理静态文件(假设默认配置)。wwwroot/Identity
给为标识 UI 提取的 NuGet 包内容文件夹。正如您问题中的代码片段所示,这仅在Development
环境中运行时发生。当您的应用程序发布时,相关文件会被复制到wwwroot
文件夹中,就好像它们是您应用程序的一部分一样。
归档时间: |
|
查看次数: |
4817 次 |
最近记录: |