我有2个具有网络核心的Web api项目。 1.-基本的Web API。 2.-联系网络API。
我可以从基本Web API动态加载联系人Web API。但是没有加载实体和图层程序集。为了使联系人Web api正常工作,我必须在基本Web api中手动添加参考实体和图层程序集。 在NET Framework中,我使用BuildManager.AddReferencedAssembly,但在网络核心中不存在。如何添加带有网络核心的动态参考?谢谢。
答案 0 :(得分:0)
我在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方法中找到它即可。
最后,我可以自满地说,我已经测试过并且可以正常工作。