如何从组织

时间:2017-11-29 14:56:59

标签: dynamics-crm dynamics-crm-2016

我正在使用动力学crm 8.1。

我已经连接到一个组织,该组织有一个传统上作为托管解决方案的一部分部署到该组织的插件。我使用插件注册工具覆盖了一个插件。这个插件现在可能是一个非托管资产,我希望它始终位于作为解决方案一部分部署的托管版本之上。

如何从组织中删除插件的非托管版本,以便托管解决方案的未来升级适用于该组织?我认为这涉及某种crm脚本。

谢谢!

2 个答案:

答案 0 :(得分:0)

插件程序集的非托管版本不会位于顶部"托管版本。它只是取代了托管版本。换句话说,该解决方案组件的行为与例如实体形式和标签。

再次导入托管解决方案或升级托管解决方案,如果方便的话。这会自动将您的非托管插件转换为托管版本。

答案 1 :(得分:0)

通过一些数据库逆向工程,我已经为自己的问题找到了答案。这个过程对我有用,但我无法保证它对每个人都有效。

使用插件注册工具替换插件程序集时,它会做三件事。

1)将修改该插件的PluginAssemblyBase记录的OverwriteTime列。 2)将为刚刚添加的插件程序集添加新的PluginAssemblyBase记录。 3)将为插件修改DependencyNodeBase记录的TopSolutionId列中的记录。

使用以下SQL查询执行此转换过程:

BEGIN TRANSACTION
        DELETE dbo.PluginAssemblyBase 
        WHERE PluginAssemblyIdUnique <> @originalPluginAssemblyIdUnique and Name = @assemblyName and OverwriteTime = 0

        UPDATE dbo.PluginAssemblyBase SET
            OverwriteTime='1900-01-01 00:00:00.000'
        WHERE PluginAssemblyIdUnique = @originalPluginAssemblyIdUnique

        UPDATE dbo.DependencyNodeBase SET
            TopSolutionId = @ManagedSolutionId
        WHERE Objectid = @pluginAssemblyId
 COMMIT TRANSACTION

该脚本可供其他人使用,但除了设置变量之外,您可能还需要在其中添加一些验证,以便在错误的情况下不使用它。

相关问题