我需要采用一个类型,并返回,在类型中使用的所有组件的路径的方法。 我写了这个:
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;
}
}
通常,这种方法做的工作,但也有一些缺点:
我没有找到如何从类型本身所引用的组件/类型,所以我用type.Assembly.GetReferencedAssemblies(),并得到了整个组装的参考,而不只是那些相关的类型。
type.Assembly.GetReferencedAssemblies()返回的AssemblyName和不具有位置/路径/文件路径属性。 要获得位置属性,我第一次使用Assembly.Load(),然后使用的位置属性。 我不想负载组件,以获得他们的路径,因为没有必要使用它们,因为Assembly.Load()可以用FileNotFoundException异常或BadImageFormatException失败。