Получить пути сборок, используемых в Type
Мне нужен метод, который принимает тип и возвращает пути всех сборок, которые используются в типе. Я написал это:
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 и не имеет свойства location / path / filepath. Чтобы получить свойство местоположения, я сначала использовал Assembly.Load (), а затем использовал свойство местоположения. Я не хочу, чтобы загрузочные сборки получали свой путь, потому что они необязательно использовались и потому что Assembly.Load () может завершиться с ошибкой FileNotFoundException или BadImageFormatException.