C# 直接引用Razor类库程序集
我正在开发一个web应用程序,需要从其他项目填充页面。我希望使用Razor类库(RCL)来实现这一点。 文件指出。我希望这只是一条捷径,可以确保开发人员按照推荐的方式进行开发。不幸的是,如果我直接引用我的RCL项目中生成的两个程序集(C# 直接引用Razor类库程序集,c#,asp.net-mvc,razor,razor-pages,razor-class-library,C#,Asp.net Mvc,Razor,Razor Pages,Razor Class Library,我正在开发一个web应用程序,需要从其他项目填充页面。我希望使用Razor类库(RCL)来实现这一点。 文件指出。我希望这只是一条捷径,可以确保开发人员按照推荐的方式进行开发。不幸的是,如果我直接引用我的RCL项目中生成的两个程序集(MyProject.dll和MyProject.Views.dll),它将无法工作。仅当我向RCL项目添加项目引用时,它才起作用 我工作的公司有一个定制的构建管道,由于我无法控制的原因,我只能直接引用程序集 当使用直接引用和项目引用时,我花了一些时间比较编译的输出,
MyProject.dll
和MyProject.Views.dll
),它将无法工作。仅当我向RCL项目添加项目引用时,它才起作用
我工作的公司有一个定制的构建管道,由于我无法控制的原因,我只能直接引用程序集
当使用直接引用和项目引用时,我花了一些时间比较编译的输出,但是我没有发现区别有人知道为什么直接引用对RCL不起作用吗?如果我了解区别,我应该能够从那里开始工作
作为奖励,有人知道解决方法吗?创建
CompiledRazorAssemblyPart
是可行的(如中所述),但我不想手动搜索程序集。在启动时将代码放在下面。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));
}
});
在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));
}
});