我有2个网络api项目与网络核心。1.-基础web api。2.-联系web api。
我可以从基础web api动态加载联系人web api。但不加载图元和层组件。要使contacts web api正常工作,我必须在基本web api中添加引用手动实体和层程序集。在NET Framework中我使用了BuildManager.AddReferencedAssembly,但在net core中并不存在。如何使用net core添加动态引用?这是真的。
发布于 2019-08-15 03:33:35
我在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方法中找到它。
作为最后一句话,我可以自满地说,我已经测试过了,它是有效的。
https://stackoverflow.com/questions/56814088
复制相似问题