所以我的目录目录设置如下:
DirectoryCatalog directoryCatalog = new DirectoryCatalog(@".\Plugins");
var catalog = new AggregateCatalog(directoryCatalog);
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
它将在我的
Plugins
文件夹中找到任何符合我的导入标准的 .dll。现在为了防止插件中的引用冲突,我想将每个插件放在一个单独的文件夹中。例如
但是我的
DirectoryCatalog
没有找到这些插件。是否可以实现这个或者我的插件库必须在那个指定的 .\Plugins
文件夹中 最佳答案
您可以通过向 DirectoryCatalogs
属性添加多个 AggregateCatalog.Catalogs
来解决您的问题,如下所示:
var catalog = new AggregateCatalog();
// iterate over all directories in .\Plugins dir and add all Plugin* dirs to catalogs
foreach (var path in Directory.EnumerateDirectories(@".\Plugins", "Plugin*", SearchOption.TopDirectoryOnly))
{
catalog.Catalogs.Add(new DirectoryCatalog(path));
}
_container = new CompositionContainer(catalog);
this._container.ComposeParts(this);
关于c# - 如何创建一个 DirectoryCatalog 来搜索插件的子目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26905630/