Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NetCORE中的BuildManager.AddReferenceAssembly_C#_.net Core - Fatal编程技术网

C# NetCORE中的BuildManager.AddReferenceAssembly

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工作,那个项目是关

我有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工作,那个项目是关于插件系统的。在这个项目中,我还使用了“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方法中找到它

最后一句话,我可以沾沾自喜地说,我已经测试过了,它是有效的