Найти сборки в каталоге - PullRequest
1 голос
/ 04 марта 2009

Как я могу получить список сборок в данном месте? Я пытаюсь размышлять над приложением, и это дает мне все, что загружено. Я просто хочу, что находится в каталоге исполняемой сборки.

Ответы [ 5 ]

5 голосов
/ 04 марта 2009

Чтобы получить путь к исполняемой сборке:

using System.IO;

String path= Path.GetDirectoryName(
 System.Reflection.Assembly.GetExecutingAssembly().Location);

Чтобы получить все сборки:

 DirectoryInfo di= new DirectoryInfo(path);
 FileInfo[] fis = di.GetFiles("*.dll");
 foreach(FileInfo fis in fls )
    //do something
1 голос
/ 04 марта 2009

Решение, предоставленное BtBh , работает для поиска всех файлов с расширением .dll. Рикардс отмечает, что только среда выполнения .Net может сказать вам, что такое допустимая сборка. Это означает, что вам придется явно загружать каждый найденный DLL-файл, чтобы проверить, является ли он действительной сборкой .Net (это может быть просто старая Windows DLL). Как упоминалось Джош , существует статический метод Assembly.ReflectionOnlyLoadFrom , который позволяет загружать сборки для проверки с помощью отражения.

1 голос
/ 04 марта 2009

Чтобы загрузить все сборки, загруженные в текущий домен приложения, вы можете использовать метод GetAssemblies :

Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
1 голос
/ 04 марта 2009

Только загрузив их и отметив, какие из них не загружаются. Это, конечно, оставит те, которые не удалось загрузить, в текущем домене приложения.

Только среда выполнения .NET сообщит, что является допустимой сборкой (и сборки не должны иметь расширение «.exe» или «.dll»).

1 голос
/ 04 марта 2009

Вы можете получить список файлов, используя пространство имен System.IO. Посмотрите на класс Директории. Затем вам необходимо определить, является ли файл сборкой или нет. Вы можете проверить двоичный файл в поисках метаданных IL, но это выходит за рамки этого ответа.

Вы также можете попробовать загрузить каждый файл для отражения только с помощью System.Reflection.Assembly.ReflectionOnlyLoadFrom ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...