以编程方式删除自定义代码工

时间:2012-09-14 06:35:42

标签: workflow dynamics-crm-2011

出于各种原因,在这里解释得太复杂,我发现自己处于需要能够删除自定义代码工作流程的位置,同时将解决方案留在那里。

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

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

其中,info是工作流程ID [在foreach循环上运行但是在点旁边]

然而,虽然该工具在没有任何问题的情况下删除了工作流,但我的代码却抱怨依赖性。

EM:

附加信息:无法删除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);

这会检索一个optionvalueset,但我无法使用它,因为我无法在解决方案被管理的情况下将其从解决方案中删除。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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