在Dynamics CRM 8.0以后,引用了托管解决方案后,为了实现回滚的功能,也引入了Solution layers概念。
CRM 在用户导入一个解决方案时,就会在目标环境组件上添加或者修改相应的层,来达到实现用户导入解决方案效果实现的目的,不过解决方案是有优先级的。
解决方案的优先级
1、托管解决方案进入托管层,且托管层可以有多层,会显示最后修改的层。
2、unmanager层生成途径:
一、通过导入非托管的解决方案。
二、在环境中直接调整,点击发布。
非托管解决方案只有一层。
3、如果一个组件有非托管层,那么用户看到的最终效果是非托管层,而看不到托管层的变化。
查看解决方案层
查看解决方案层有以下两个方案:
1、可以在Solution中选择控件、查看Solution layers查看,具体如下图,点击查看解决方案层:
显示当前控件的解决方案依赖层如下,选择对应的解决方案,会显示当前解决方案所做的修改:
2、在要请求的URL页面url后面追加 &ribbondebug=true,页面会多一个“Command checker
”按钮,点击按钮,会显示如下信息:
选择要查看解决方案层的控件,选择“View group solution layers”,显示如下图:
解决方案回退方法
1、如果是托管解决方案,直接卸载托管解决方案。
2、非托管解决方案,有以下三种解决办法:
一、使用解决方案层上提供的删除当前修改方法,具体见下图:
二、查看当前解决方案的内容,把对应的修改内容修改回去。
三、使用如下方法,新建解决方案,把需要调整的控件引入,导出并修改自定义内容,然后导入。
用下面文件覆盖解决方案中的文件:
<RibbonDiffXml>
<CustomActions />
<Templates>
<RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
</Templates>
<CommandDefinitions />
<RuleDefinitions>
<TabDisplayRules />
<DisplayRules />
<EnableRules />
</RuleDefinitions>
<LocLabels />
</RibbonDiffXml>