Dotnet core get list of downloaded dependency injection builds

I use AutoFac to automatically register dependencies based on their interface implementations as follows:

builder.RegisterAssemblyTypes(Assembly.GetEntryAssembly()).AsImplementedInterfaces();

This is great for input assembly, but what about all related assemblies?

I would like to do something like:

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

I searched and saw a bunch of .netcore 1.0 using AssemblyLoadContext, etc., but this no longer looks like 1.1. Basically, when you search, you get a lot of outdated links to things that no longer work.

There should be a way to get currently loaded assemblies.

How can i do this?

+4
source share
2 answers

.NET Core 2.0 .NET Framework API, AppDomain.CurrentDomain.GetAssemblies(), , . , .NET Framework .NET Core, ( ). , .

+2

Scrutor, .netstandard 1.6 , .

    public IImplementationTypeSelector FromAssemblyDependencies(Assembly assembly)
    {
        Preconditions.NotNull(assembly, nameof(assembly));

        var assemblies = new List<Assembly> { assembly };

        try
        {
            var dependencyNames = assembly.GetReferencedAssemblies();

            foreach (var dependencyName in dependencyNames)
            {
                try
                {
                    // Try to load the referenced assembly...
                    assemblies.Add(Assembly.Load(dependencyName));
                }
                catch
                {
                    // Failed to load assembly. Skip it.
                }
            }

            return InternalFromAssemblies(assemblies);
        }
        catch
        {
            return InternalFromAssemblies(assemblies);
        }
   }
0

Source: https://habr.com/ru/post/1679914/


All Articles