升级FakeXrmEasy 2.1.2报XrmFakedContext无ExecutePluginWith定义问题咨询
报错原因
该报错是FakeXrmEasy 2.x版本的API破坏性变更导致的,并非遗漏依赖或配置错误。v1版本中挂载在XrmFakedContext下的ExecutePluginWith扩展方法,在v2版本中已经被重构移除。
v2版本对原有大一统的包结构做了拆分,插件测试相关的能力全部迁移到了独立包中,同时调整了插件执行的API设计。
修复步骤
- 安装插件测试专属依赖包
v2版本核心包FakeXrmEasy.Core不包含插件测试相关能力,需要额外安装和核心包版本完全一致的FakeXrmEasy.Plugins包(版本号必须为2.1.2,和你升级的核心包版本对齐,否则会出现版本兼容问题)。 - 替换原有
ExecutePluginWith调用逻辑
v2版本采用链式构造器模式实现插件执行上下文配置,替代原有的ExecutePluginWith传参模式,对应写法示例:
原有// ===== 原v1版本失效写法 ===== // _fakedContext.ExecutePluginWith<MyTestPlugin>( // "Create", // (int)PluginStage.PreOperation, // (int)SdkMessageProcessingStepMode.Synchronous, // targetEntity // ); // ===== v2.1.2 适配写法 ===== var pluginExecutionContext = _fakedContext.GetPluginContext<MyTestPlugin>(); pluginExecutionContext .WithMessage("Create") .WithStage(PluginStage.PreOperation) .WithMode(SdkMessageProcessingStepMode.Synchronous) .WithTarget(targetEntity) .Execute();ExecutePluginWith支持的前置/后置镜像、自定义输入参数、插件配置等能力,都可以通过链式调用对应的WithPreImage()、WithPostImage()、WithInputParameter()、WithUnsecureConfiguration()方法实现,参数语义和v1版本完全一致。
排查提示
如果安装对应包之后仍然找不到相关方法,检查项目引用的所有FakeXrmEasy相关包版本是否完全统一,只要有一个相关包版本低于2.x,就会出现扩展方法无法识别的问题。
内容的提问来源于stack exchange,提问作者Bala Patel
相关产品推荐
相关产品推荐

