如果文件在文件夹中,我正在尝试加载dll。为此,我这样做:
FileSystemWatcher filesw = new FileSystemWatcher();
string pathDossier = @"C:\Users\gfauconnier\Documents\Visual Studio
2013\Projects\PluginAppSolution\PluginApp\bin\Debug\Plugin";
DirectoryCatalog directoryCatalog;
public PluginLoader(string path)
{
directoryCatalog = new DirectoryCatalog(path);
filesw.Path = pathDossier;
filesw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
filesw.Filter = "*.*";
filesw.EnableRaisingEvents = true;
filesw.Changed += new FileSystemEventHandler(OnChanged);
var catalog = new AggregateCatalog(directoryCatalog);
_Container = new CompositionContainer(catalog);
_Container.ComposeParts(this);
}
private void OnChanged(object sender, FileSystemEventArgs e)
{
try
{
directoryCatalog.Refresh();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
MessageBox.Show("refresh ok");
}
问题是我最终遇到了以下我不理解的错误:
组成保持不变。由于以下错误,更改被拒绝:合成产生单个合成错误。最初的原因在下面提供。有关更多信息,请查看CompositionException.Errors属性。
1)修改了组件“ MyApp.PluginLoader”上不可重组的导入“ MyApp.PluginLoader.Plugins(ContractName =“ PluginContract.IPlugin”)”。
我按如下方式加载插件:
PluginLoader loader = new PluginLoader("Plugin");
_Plugins = new Dictionary<string, IPlugin>();
IEnumerable<IPlugin> plugins = loader.Plugins;
预先感谢您的帮助!