我有 2 个带有 net core 的 web api 项目。1.- 基础网络 API。2.-联系web api。
我可以从基本 web api 动态加载联系人 web api。但未加载实体和层程序集。要使联系人 Web api 正常工作,我必须在基本 Web api 中手动添加引用实体和层程序集。在 NET Framework 中,我使用 BuildManager.AddReferencedAssembly,但在 net core 中不存在。如何使用 net core 添加动态引用?谢谢。
我在 MVC 工作,那个项目是在插件系统上的。在这个项目中,我还使用“BuildManager.AddReferencedAssembly”方法来添加程序集的引用。不幸的是,这种方法只能在框架 4.x 中使用。
经过一些研究,我在这个地址上找到了解决这个问题的方法:
https://github.com/simplcommerce/SimplCommerce
您可以分析此项目以改进您的解决方案。(我假设您正在使用插件系统)
但是,如果你只需要一个方法来替换“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();
“服务”变量必须是从 IServiceCollection 派生的类型。简单地说,您可以在 StartUp 类的 ConfigureServices 方法中找到它。
最后,我可以满怀信心地说,我已经测试过了,它有效。