当 ASPNETCORE_ENVIRONMENT 更改为 "Development" 以外的任何内容时 - 在 VS 中调试时,Blazor 应用程序看不到来自 razor class 库的资源

When ASPNETCORE_ENVIRONMENT changed to anything but "Development" - Blazor app doesn't see resources from razor class libraries when debugged in VS

也许试试这个例子:

https://github.com/HTD/BlazorProfiles

这是一个演示 Blazor 应用程序(默认)。 我创建了 2 个自定义应用程序配置文件:开发和生产。 只需在 Visual Studio.

中按 F5 键,两者都应该可以调试

然后我创建了一个虚拟的 Razor 组件库并将其命名为 RCL。 我把它作为主项目的依赖项。 在我的虚拟 RCL 中,在 wwwroot 目录中我添加了 extra.css 文件。 该文件的作用是将背景颜色更改为浅绿色。 如果它发生 - 这意味着文件已经加载。如果背景保持灰色/白色,则未加载。

这是加载 CSS 的 _Host.cshtml 片段:

<link href="_content/RCL/extra.css" rel="stylesheet" />

尝试运行它。有用。但是在一个条件下: ASPNETCORE_ENVIRONMENT 环境变量必须设置为“开发”。

如果您测试 Production 配置文件(或将环境变量更改为“Production”),然后 运行 应用程序 - extra.css 文件将不会加载。

背景没有变成绿色,所以出了点问题。 为什么会这样?这是 Visual Studio 中的错误吗?

如果你想知道为什么我需要设置这个环境变量:它允许加载额外的

appsettings.[ASPNETCORE_ENVIRONMENT].json

文件。所以我可以为我的应用程序设置不同的配置。我需要使用不同的配置测试我的应用程序。现在我只能在 Visual Studio 中使用“开发”配置对其进行调试。当我将配置更改为其他任何内容时,我无法 运行 我的应用程序,因为它无法从库中加载组件所需的必要 JavaScript 文件。

因此,预期的行为:无论我在“ASPNETCORE_ENVIRONMENT”中放入什么 - RCL 中的文件都应该始终加载。他们为什么不应该?

实际行为:使用不同的配置(配置文件)会中断 Razor 组件库加载。

找到了in the ASP.NET core github issues. It's actually mentioned in the docs

您需要在虚拟主机中启用静态网络资产:

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder => {
                webBuilder.UseStaticWebAssets(); // <----
                webBuilder.UseStartup<Startup>();
            });

编辑:注意文档中的注释

Calling UseStaticWebAssets isn't required when running an app from published output (dotnet publish).

今天这让我困惑了几个小时,直到我找到了公认的答案,这让我找到了文档。对于 CORE 6.0 应用程序,情况略有变化:

...static web assets are enabled by default in the Development environment. To support assets in other environments when running from build output, call UseStaticWebAssets on the host builder in Program.cs:

builder.WebHost.UseWebRoot("wwwroot");
builder.WebHost.UseStaticWebAssets();

你还需要调用

app.UseStaticFiles();

var app = builder.Build();

构建 app 之后进一步向下