【发布时间】:2020-04-13 08:40:15
【问题描述】:
我正在开发一个 Blazor 项目,我基本上有 3 个项目:Client、Server 和 Components。 Components 是 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,更具体地说是this。
请注意,我可以通过这样做来引用客户端项目中的 main.js 文件
<script src="js/main.js"></script> <<<--- WORKS
但在 RCL 中使用 _content/{library_name}/... 约定引用静态文件不起作用。
有什么问题?
【问题讨论】:
-
这是什么奇怪的要求——为什么你要在服务器项目中使用 RCL 中的 JS 文件,而服务器项目正在为 Blazor Webassembly 客户端提供服务——当然你想使用 RCL客户项目中的资产,不是吗?
-
这是一个公平的问题——我实际上并没有创建项目结构和设置,但我相信它是这样设置的,以便能够在服务器模式和客户端(webassembly)之间动态切换只需分别注入 blazor.server.js 或 blazor.webassembly.js 文件。这是为了支持不支持 WebAssembly 的 IE11。
-
添加您正在使用的版本可能会有所帮助。我刚刚创建了一个新的 Blazor WebAssembly(客户端)项目,which refer to a RCL project,它可以工作(即can open the file)。
-
另外,请确保您有正确的
{library_name}作为您的组件 RCL 项目的程序集名称:imgur.com/NtgnzR2 -
我会咨询项目模板的作者,他们一定有同样的问题
标签: javascript c# .net-core blazor asp.net-core-3.0