Obter caminhos de montagens usadas no tipo
Eu preciso de um método que leva um tipo e retorna os caminhos de todos os assemblies que usados no tipo. Eu escrevi isto:
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;
}
}
Geralmente este método faz o trabalho, mas tem algumas desvantagens:
Eu não encontrei como obter os assemblies / tipos referenciados do próprio tipo, então eu usei type.Assembly.GetReferencedAssemblies () e obtive as referências de todo o assembly, não apenas aquelas relacionadas ao tipo.
type.Assembly.GetReferencedAssemblies () retorna AssemblyName e não possui propriedade location / path / filepath. Para obter a propriedade location, usei pela primeira vez Assembly.Load () e usei a propriedade location. Eu não quero carregar assemblies para obter o seu caminho, porque eles não necessários utilizados e porque Assembly.Load () pode falhar com FileNotFoundException ou BadImageFormatException.