Get the paths of all referenced assemblies

后端 未结 4 1557
感情败类
感情败类 2021-01-11 13:48

How do I get the paths of all the assemblies referenced by the currently executing assembly? GetReferencedAssmblies() gives me the AssemblyName[]s.

4条回答
  •  臣服心动
    2021-01-11 14:18

    Following Hans Passant's answer, and since the CodeBase property always contained null, I came up with this. It might not find all assemblies since they might not all be already loaded. In my situation, I had to find all reference of a previously loaded assembly, so it worked well:

    IEnumerable GetAssemblyFiles(Assembly assembly)
    {
        var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
        return assembly.GetReferencedAssemblies()
            .Select(name => loadedAssemblies.SingleOrDefault(a => a.FullName == name.FullName)?.Location)
            .Where(l => l != null);
    }
    

    Usage:

    var assemblyFiles = GetAssemblyFiles(typeof(MyClass).Assembly);
    

提交回复
热议问题