Obtener rutas de ensamblajes utilizados en tipo
Necesito un método que tome un Tipo y devuelva las rutas de todos los ensamblajes que se usaron en el tipo. Yo escribí esto:
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;
}
}
Generalmente este método hace el trabajo, pero tiene algunas desventajas:
No encontré cómo obtener los ensamblados / tipos referenciados del tipo en sí, por lo que utilicé type.Assembly.GetReferencedAssemblies () y obtuve las referencias de todo el ensamblado, no solo las relacionadas con el tipo.
type.Assembly.GetReferencedAssemblies () devuelve AssemblyName y no tiene ninguna propiedad location / path / filepath. Para obtener la propiedad de ubicación, primero usé Assembly.Load () y luego usé la propiedad de ubicación. No quiero que los ensamblajes de carga obtengan su ruta, ya que no se usan necesariamente, y porque Assembly.Load () puede fallar con FileNotFoundException o BadImageFormatException.