我无法让 Razor 运行时编译与动态加载的程序集一起使用。我的代码:
Startup.cs
var assembly = Assembly.LoadFrom(someModuleDllPath);
var viewsAssembly = Assembly.LoadFrom(someModuleViewsDllPath);
services.AddControllersWithViews()
.AddApplicationPart(assembly)
.AddApplicationPart(viewsAssembly)
.AddRazorRuntimeCompilation();
services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
options.FileProviders.Add(new EmbeddedFileProvider(assembly));
});
使用这种方法,我需要重新构建加载的程序集项目并重新启动主机以查看更改。当我将最后两行替换为:
services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
options.FileProviders.Add(new PhysicalFileProvider(loadedAssemblyProjectContentRootPath));
});
我得到错误:
找不到包“<已加载程序集的名称>”的编译库位置。
设置MvcRazorExcludeRefAssembliesFromPublish
为false
不会改变任何东西。PhysicalFileProvider
当我添加对项目的显式引用时,该选项有效。
我正在使用 .NET 5 并且两个项目都有Microsoft.NET.Sdk.Web
类型。
有什么办法可以让它工作吗?