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.

questionAnswers(2)

yourAnswerToTheQuestion