无法从 RCL 引用静态文件

Can't Reference Static Files From RCL

我正在开发一个 Blazor 项目,我基本上有 3 个项目:ClientServerComponentsComponents 是一个 RCL。结构类似如下:

Components (RCL)
-- wwwroot/
---- js/
------ main.js

Client
-- wwwroot/
---- js/
------ main.js

Server
-- Startup.cs (in Configure(IApplicationBuilder app), calling `app.UseClientSideBlazorFiles<Client.Startup>();`)
-- Pages
---- _Host.cshtml (in this file, referencing a main.js from the Components project like: <script src="_content/Components/js/main.js"></script>)

所以Server项目中的_Host.cshtml是入口点。我正在尝试从 Components RCL 引用 main.js 文件,方法是:

<scipt src="_content/Components/js/main.js"></script> <<--- NOT WORKING

但它不起作用 - 我收到 404。我基于 this and more specifically this

请注意,通过执行此操作,我可以在客户端项目中引用 main.js 文件

<script src="js/main.js"></script> <<<--- WORKS

但是使用 _content/{library_name}/... 约定在 RCL 中引用静态文件不起作用。

有什么问题?

根据 Microsoft documentation,您必须在 bootstrap 文件中包含 2 行 在您的消费项目 中,以便静态文件引用正常工作:

1) Startup.cs > Configure() 方法 必须包含 app.UseStaticFiles();

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    app.UseStaticFiles(); // <<=== MUST INCLUDE THIS LINE

    ...
}

2) Program.cs > CreateHostBuilder() 方法 必须包含 webBuilder.UseStaticWebAssets();

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

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

#2 是我所缺少的。我不确定我是否只是在文档中遗漏了它,或者他们是否最近更新了它以包含它,但无论哪种方式都为我修复了它。