Razor Class 库 wwwroot 内容访问

Razor Class Library wwwroot content access

我有一个 Razor Class 库,其中包含一些 Razor 视图,以及其 wwwroot 文件夹中的一些内容。

当我使用 Visual Studio(添加项目引用)将已编译的 DLL 文件导入到 .NET Core Web 项目时,一切正常。

但是,如果我尝试动态加载 DLL(使用反射),除了能够访问 wwwroot 文件夹中的内容(即它未映射到 _content/AssemblyName/ 路径)之外,所有似乎都有效.

我正在使用以下代码动态导入程序集并将其添加为应用程序部分:

Assembly PrimaryAssembly = Assembly.LoadFrom("bin\Debug\net6.0\RCL.dll");
AssemblyPart assemblypart = new AssemblyPart(PrimaryAssembly);
EmbeddedFileProvider fileProvider = new EmbeddedFileProvider(PrimaryAssembly);
services.AddControllersWithViews().ConfigureApplicationPartManager(apm => apm.ApplicationParts.Add(assemblypart));
services.Configure<MvcRazorRuntimeCompilationOptions>(options => options.FileProviders.Add(fileProvider));

我正在使用 .NET Core 6.0。

有什么想法吗?

干杯。

在 Microsoft Q&A 论坛上 @ZhiLv-MSFT 的帮助下,我设法找到了这个问题的解决方案。

本文全部解释:https://www.codeproject.com/Articles/5296270/ASP-NET-Core-3-x-Dynamically-Loadable-Plugins-with

CodeProject文章的内容帮我解决了。

重要的部分是创建 ManifestEmbeddedFileProvider(它指向程序集,以及文件所在的位置(在我的例子中是“wwwroot”)),然后附加这个文件使用 CompositeFileProvider.

一切似乎都很顺利。