0

由于各种原因过于复杂,无法在此解释,我发现自己需要能够删除自定义代码工作流,同时将解决方案留在那里。

我基本上和插件注册工具有相同的代码

service.Delete("plugintype", new Guid(info));

其中 info 是工作流 id [在 foreach 循环上运行,但这不是重点]

但是,虽然该工具可以毫无问题地删除工作流,但我的代码却抱怨依赖关系。

电磁:

附加信息:无法删除 PluginType(a0b2dcf7-cf2a-111e-7da9-003021880a42) 组件,因为它被 1 个其他组件引用。有关引用组件的列表,请使用 RetrieveDependenciesForDeleteRequest。

我适时地做到了

RetrieveDependenciesForDeleteRequest req = new RetrieveDependenciesForDeleteRequest();
req.ComponentType = 90; //plugintype
req.ObjectId = new Guid(info);
RetrieveDependenciesForDeleteResponse resp = (RetrieveDependenciesForDeleteResponse)OrgService.Execute(req);

这会检索一个选项值集,但我无能为力,因为在管理解决方案时我无法将其从解决方案中删除。

我能看到的唯一区别是 OrganizationServiceProxy 实例化的方式。插件注册工具包括一种刷新安全令牌的方法,但据我所知,它并没有做太多(我已经逐步完成了代码,但可能我错过了一些东西)

4

2 回答 2

1

您确定它是依赖项的 OptionSetValue 吗?使用 GUI 来确定依赖关系要容易得多。在 CRM 2011 中启动您的解决方案,单击“插件程序集”,选择相关程序集,然后浏览每个自定义工作流/插件项,然后单击“显示依赖项”。

在我的情况下,我有另一个工作流程(在 CRM 中创建),它引用了一个自定义工作流程,以防止删除程序集。

于 2012-11-26T10:26:34.510 回答
0

您将无法从托管解决方案中删除组件...您最初是该解决方案的作者吗?

顺便说一句,您的工作流程是否会在更改显示为依赖项的 OptionSet 时触发?

于 2012-09-14T09:23:26.820 回答