Мое общее правило в исключении по сравнению с аргументом кода возврата:
Что ж, вы можете взломать это вместе с помощью следующих методов, сначала используйте что-то вроде:
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
, чтобы получить путь к вашей текущей сборке. Затем переберите все библиотеки DLL в пути, используя метод Directory.GetFiles с подходящим фильтром. Ваш окончательный код должен выглядеть так:
List<Assembly> allAssemblies = new List<Assembly>();
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
foreach (string dll in Directory.GetFiles(path, "*.dll"))
allAssemblies.Add(Assembly.LoadFile(dll));
Обратите внимание, что я не тестировал это, поэтому вам может потребоваться проверить, действительно ли dll содержит полный путь (и объединить путь, если это не так)
Вы можете сделать это так, но вам, вероятно, не следует загружать все в текущий домен приложения таким образом, поскольку сборки могут содержать вредоносный код.
public IEnumerable<Assembly> 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;
}
РЕДАКТИРОВАТЬ: Я не тестировал код ( нет доступа к Visual Studio на этом компьютере), но я надеюсь, что вы уловили идею.