跨DLL/项目定义的Resource Plugin无法被MORYX识别的解决方法问询
让MORYX识别跨程序集策略实现的方法
MORYX默认只会扫描标记了DependencyRegistration的当前程序集,所以其他项目中的插件实现无法被自动发现,你可以通过以下步骤解决:
给自定义策略所在程序集添加
DependencyRegistration标记
每个包含插件的程序集都需要显式告知MORYX进行扫描。在你的SpecificImplementation所在的项目中,添加一个空的安装类并标记特性:[DependencyRegistration(InstallerMode.All)] public class SpecificStrategyInstaller { // 无需编写额外逻辑,特性即可触发程序集扫描 }这个类的作用是让MORYX识别到该程序集需要被解析,从而找到里面标记了
Plugin的SpecificImplementation。确保自定义程序集被正确加载
- 若通过NuGet引用,检查项目属性的“生成”设置,将该程序集的“复制本地”设为
True,确保编译时复制到主程序输出目录。 - 手动部署时,将该程序集及其依赖文件放到主程序的运行目录下。
- 若通过NuGet引用,检查项目属性的“生成”设置,将该程序集的“复制本地”设为
验证插件注册状态
可以在应用启动时通过IPluginManager检查已注册的插件,确认自定义策略是否被识别:var pluginManager = container.Resolve<IPluginManager>(); var registeredStrategies = pluginManager.GetPlugins<IStrategy>(); foreach (var strategy in registeredStrategies) { Console.WriteLine($"已注册策略:{strategy.Name}"); }
内容的提问来源于stack exchange,提问作者André Niggemann
相关产品推荐
相关产品推荐

