dotnet core获取依赖注入的已加载程序集列表

Rob*_*ert 4 c# dependency-injection .net-core

我正在使用AutoFac根据其接口实现自动注册依赖项,如下所示:

builder.RegisterAssemblyTypes(Assembly.GetEntryAssembly()).AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)

这适用于入口组件,但是所有相关组件呢?

我想做点什么:

IList<Assembly> assemblies = GetLoadedAssemblies();
foreach(var assembly in assemblies)
{
  builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
}
Run Code Online (Sandbox Code Playgroud)

我用AssemblyLoadContext等搜索并查看了一堆.netcore 1.0的内容,但1.1中似乎不再存在.基本上,当你搜索时,你会得到许多过时的引用,这些引用不再适用.

必须有一种方法来获取当前加载的程序集.

我怎样才能做到这一点?

Krz*_*cki 8

在.NET Core 2.0中,许多API都来自.NET Framework,其中包括AppDomain.CurrentDomain.GetAssemblies()允许您获取已加载到应用程序域的执行上下文中的程序集.当然,这个概念并没有完全从.NET Framework移植到.NET Core,因此您无法创建自己的应用程序域并将它们视为单个进程内的隔离单元(因此您只有一个应用程序域).但这足以满足您的目标.