Ты знаешь, где это не работает?Содержит ли переменная "args" что-нибудь?Я подозреваю, что ваша проблема в том, как вы строите пути.Вы должны использовать класс Path, а не строковые операции.
Чтобы получить текущий исполняемый каталог:
string executablePath = Path.GetDirectoryName(Application.ExecutablePath);
Вы должны использовать это для построения вашего DirectoryInfo в начале GetAllPlugins ()метод тоже.Чтобы построить путь с подпапкой:
string pluginPath = Path.Combine(executablePath, "Plugin");
Чтобы получить все файлы в подкаталоге плагина с расширением dll:
string[] pluginFiles = Directory.GetFiles(pluginPath, "*.dll");
Обратите внимание, что возвращаемые имена файлов содержат полный путь.Вам не нужно ничего добавлять:
foreach (string fileName in pluginFiles)
{
Assembly assembly = Assembly.LoadFrom(fileName);
List<Type> types = assembly.GetTypes().ToList();
foreach (Type type in types.FindAll(t => t.GetInterface("IMFDBAnalyserPlugin") != null)
{
...
}
}
должно работать.
Кроме того, не используйте подстроку, если вы хотите, чтобы имена файлов, с расширением или без, вы должны использоватьPath.GetFileName или Path.GetFileNameWithoutExtension.
И используйте этот метод для создания экземпляра вашего плагина: http://msdn.microsoft.com/en-us/library/wccyzw83.aspx