как загрузить все сборки из вашего каталога / bin

В веб-приложении я хочу загрузить все сборки в каталог / bin.

Поскольку это может быть установлено где угодно в файловой системе, я не могу настроить конкретный путь, где он хранится.

Я хочу Список объектов сборки сборки.

Ну, вы можете взломать это вместе со следующими методами, изначально используйте что-то вроде:

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

чтобы получить путь к вашей текущей сборке. Затем перебираем все DLL в пути, используя метод Directory.GetFiles с подходящим фильтром. Ваш последний код должен выглядеть так:

 List allAssemblies = new List(); string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); foreach (string dll in Directory.GetFiles(path, "*.dll")) allAssemblies.Add(Assembly.LoadFile(dll)); 

Обратите внимание, что я не тестировал это, поэтому вам может потребоваться проверить, действительно ли DLL содержит полный путь (и конкатенировать путь, если это не так)

Чтобы получить каталог bin, string path = Assembly.GetExecutingAssembly().Location; НЕ всегда работает (особенно когда исполняющая assembly помещена во временный каталог ASP.NET).

Вместо этого вы должны использовать string binPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin");

Кроме того, вы должны, вероятно, учитывать исключения FileLoadException и BadImageFormatException.

Вот моя рабочая функция:

 public static void LoadAllBinDirectoryAssemblies() { string binPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin"); // note: don't use CurrentEntryAssembly or anything like that. foreach (string dll in Directory.GetFiles(binPath, "*.dll", SearchOption.AllDirectories)) { try { Assembly loadedAssembly = Assembly.LoadFile(dll); } catch (FileLoadException loadEx) { } // The Assembly has already been loaded. catch (BadImageFormatException imgEx) { } // If a BadImageFormatException exception is thrown, the file is not an assembly. } // foreach dll } 

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

 public IEnumerable LoadAssemblies() { DirectoryInfo directory = new DirectoryInfo(@"c:\mybinfolder"); FileInfo[] files = directory.GetFiles("*.dll", SearchOption.TopDirectoryOnly); foreach (FileInfo file in files) { // Load the file into the application domain. AssemblyName assemblyName = AssemblyName.GetAssemblyName(file.FullName); Assembly assembly = AppDomain.CurrentDomain.Load(assemblyName); yield return assembly; } yield break; } 

EDIT: я не тестировал код (нет доступа к Visual Studio на этом компьютере), но я надеюсь, что вы получите эту идею.

Я знаю, что это старый вопрос, но …

System.AppDomain.CurrentDomain.GetAssemblies ()

  • _addcarry_u64 и _addcarryx_u64 с MSVC и ICC
  • Код C ++ для проверки гипотезы Collatz быстрее, чем assembly вручную - почему?
  • Есть ли альтернатива Maven или порт для мира .NET?
  • Динамически заменить содержимое метода C #?
  • Самый быстрый способ вычисления 128-битного целого по модулю 64-разрядного целого числа
  • Ошибки CocoaPods при сборке проекта
  • Поиск всех пространств имен в сборке с использованием Reflection (DotNET)
  • Visual Studio «Не удалось скопировать» ... во время сборки
  • Безопасно ли читать конец конца буфера на одной странице на x86 и x64?
  • x86_64 - Условия сборки и выход из строя
  • Как скомпилировать и запустить программу C в Sublime Text 2?
  • Interesting Posts

    Чистая установка 64-бит Windows 7 Pro на ноутбуке UEFI с разделом GPT?

    Ошибка библиотеки библиотеки материалов Google Тип программы уже присутствует: android.support.v4.app.INotificationSideChannel $ Stub $ Proxy

    Как создать загрузочный USB-накопитель с несколькими операционными системами?

    Каковы различия между обычным и тонким пакетом jquery?

    Как создать NSTimer в фоновом streamе?

    Перенос Windows 8.1 в начало диска

    Как вы форматируете день месяца, чтобы сказать «11-й», «21-й» или «23-й» (порядковый индикатор)?

    Почему SSE скалярный sqrt (x) медленнее, чем rsqrt (x) * x?

    Поддержка многопользовательских ответов браузером

    Как получить IP-адрес эмулятора Android?

    Почему переменная NSInteger должна быть отброшена дольше при использовании в качестве аргумента формата?

    Как заполнить / создать экземпляр массива C # с одним значением?

    Почему добавление объектов в EF 4.1 так медленно по сравнению с ObjectContext?

    biginteger по Objective-c

    Автоматически загружать музыку с помощью Google Music на сервере Linux

    Давайте будем гением компьютера.