首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetCORE中的BuildManager.AddReferencedAssembly

NetCORE中的BuildManager.AddReferencedAssembly
EN

Stack Overflow用户
提问于 2019-06-29 07:40:57
回答 1查看 113关注 0票数 2

我有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添加动态引用?这是真的。

EN

回答 1

Stack Overflow用户

发布于 2019-08-15 03:33:35

我在MVC工作,那个项目是关于插件系统的。在这个项目中,我还使用了"BuildManager.AddReferencedAssembly“方法来添加程序集的引用。不幸的是,这种方法只能在框架4.x中使用。

经过一些研究,我在这个地址上找到了解决这个问题的方法:

https://github.com/simplcommerce/SimplCommerce

您可以分析此项目以改进您的解决方案。(我假设您正在开发一个插件系统)

但是,如果您只需要一个方法来替换"BuildManager.AddReferencedAssembly“方法,您可以使用以下方法:

代码语言:javascript
复制
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。您可以从如下代码中获得它:

代码语言:javascript
复制
IMvcBuilder  _mvcBuilder = services.AddMvc();

“服务”变量必须是从IServiceCollection派生的类型。简单地说,您可以在StartUp类的ConfigureServices方法中找到它。

作为最后一句话,我可以自满地说,我已经测试过了,它是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56814088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档