Get paths of assemblies used in Type

前提是你 提交于 2019-11-27 03:30:47

问题


I need a method that takes a Type and returns the paths of all assemblies that used in the type. I wrote this:

public static IEnumerable<string> GetReferencesAssembliesPaths(this Type type)
{   
 yield return type.Assembly.Location;

 foreach (AssemblyName assemblyName in type.Assembly.GetReferencedAssemblies())
 {
  yield return Assembly.Load(assemblyName).Location;
 }
}

Generally this method do the job, but have some disadvantages:

  • I didn't found how to get the referenced assemblies/types from the type itself, so i used type.Assembly.GetReferencedAssemblies() and got the references of the whole assembly, not just those that related to the type.

  • type.Assembly.GetReferencedAssemblies() returns AssemblyName and has no location/path/filepath property. To get the location property, i first used Assembly.Load() and then used the location property. I dont want load assemblies to get their path, because they not necessary used, and because Assembly.Load() can fail with FileNotFoundException or BadImageFormatException.


回答1:


I think i solved the Assembly.Load() problem by replacing it to Assembly.ReflectionOnlyLoad().

now this is how my method looks like:

public static IEnumerable<string> GetReferencesAssembliesPaths(this Type type)
{           
    yield return type.Assembly.Location;

    foreach (AssemblyName assemblyName in type.Assembly.GetReferencedAssemblies())
    {
        yield return Assembly.ReflectionOnlyLoad(assemblyName.FullName).Location;
    }
}

now the only left problem is the type.Assembly.GetReferencedAssemblies(), how do i get referenced assemblies from the type rather than from the assembly?




回答2:


type.Assembly.GetReferencedAssemblies() will return all the assemblies that are referenced by the assembly in which the type is declared. This doesn't mean that the assemblies you will get with this function have anything in common with the given type.



来源:https://stackoverflow.com/questions/1582510/get-paths-of-assemblies-used-in-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!