我正在开发一个Web应用程序,该页面需要从其他项目中填充页面。我希望为此使用Razor类库(RCL)。
该文档指出a RCL can be referenced only as a project reference or a nuget package。我希望这只是确保开发人员采用推荐方式的捷径。不幸的是,如果我直接引用我的RCL项目中生成的两个程序集(MyProject.dll
和MyProject.Views.dll
),那么它将无法正常工作。仅当我将项目引用添加到RCL项目时,它才起作用。
我工作的公司有一个自定义构建管道,由于无法控制的原因,我只能直接引用程序集。
在使用直接引用和项目引用时,我花了一些时间比较编译的输出,但是我找不到任何区别。 有人知道为什么直接引用对RCL不起作用吗?如果我知道有什么区别,那么我应该可以从那里开始。
作为奖励,有人知道解决方法吗?创建CompiledRazorAssemblyPart
是可行的(如Loading Razor Class Libraries as plugins中所述),但我宁愿不必手动搜索程序集。
答案 0 :(得分:0)
将以下代码放在Startup.cs上
var assemblies = new string[] { "APP.Plugins.Test" };
services
.AddMvc()
.ConfigureApplicationPartManager(apm =>
{
foreach (var assemblyFile in assemblies)
{
//main assembly
var assembly = Assembly.Load(assemblyFile);
apm.ApplicationParts.Add(new AssemblyPart(assembly));
//view assembly
var assemblyView = Assembly.Load(assemblyFile+".Views");
apm.ApplicationParts.Add(new CompiledRazorAssemblyPart(assemblyView));
}
});