C# NetCORE中的BuildManager.AddReferenceAssembly
我有2个网络api项目与网络核心。 1.-基本web api。 2.-联系网络api 我可以从基本web api动态加载contact web api。但不会加载实体和图层部件。要使contacts web api正常工作,我必须在基本web api中手动添加引用实体和层程序集。C# NetCORE中的BuildManager.AddReferenceAssembly,c#,.net-core,C#,.net Core,我有2个网络api项目与网络核心。 1.-基本web api。 2.-联系网络api 我可以从基本web api动态加载contact web api。但不会加载实体和图层部件。要使contacts web api正常工作,我必须在基本web api中手动添加引用实体和层程序集。 在NET Framework中,我使用BuildManager.AddReferenceAssembly,但在NET core中不存在。如何使用net core添加动态引用?。Thnaks.我在MVC工作,那个项目是关
在NET Framework中,我使用BuildManager.AddReferenceAssembly,但在NET core中不存在。如何使用net core添加动态引用?。Thnaks.我在MVC工作,那个项目是关于插件系统的。在这个项目中,我还使用了“BuildManager.AddReferencedAssembly”方法来添加程序集的引用。不幸的是,这种方法只能在Framework4.x中使用 经过一些研究,我找到了解决这个问题的方法: 您可以分析此项目以改进您的解决方案。(我假设您正在使用插件系统) 但是,如果您只需要一个方法来替换“BuildManager.AddReferencedAssembly”方法,您可以使用以下方法:
static void AddApplicationPart(IMvcBuilder mvcBuilder, Assembly assembly)
{
var partFactory = ApplicationPartFactory.GetApplicationPartFactory(assembly);
foreach (var part in partFactory.GetApplicationParts(assembly))
{
mvcBuilder.PartManager.ApplicationParts.Add(part);
}
var relatedAssemblies = RelatedAssemblyAttribute.GetRelatedAssemblies(assembly, throwOnError: false);
foreach (var relatedAssembly in relatedAssemblies)
{
partFactory = ApplicationPartFactory.GetApplicationPartFactory(relatedAssembly);
foreach (var part in partFactory.GetApplicationParts(relatedAssembly))
{
mvcBuilder.PartManager.ApplicationParts.Add(part);
}
}
}
要使用此方法,需要IMvcBuilder。您可以从如下代码中获取:
IMvcBuilder _mvcBuilder = services.AddMvc();
“services”变量必须是从IServiceCollection派生的类型。简单地说,您可以在StartUp类的ConfigureServices方法中找到它
最后一句话,我可以沾沾自喜地说,我已经测试过了,它是有效的