了解如何合并托管的解决方案

准备要安装的托管解决方案时,请记住环境可能已安装了多个解决方案,或者将来可能要安装其他解决方案。 构建一个遵循最佳实践的解决方案,这样您的解决方案就不会干扰其他解决方案。

Microsoft Dataverse 用于合并自定义项的进程强调维护解决方案的功能。 虽然已竭尽全力保持外观,但是自定义项之间的不兼容性可能需要计算的解决方案更改某些外观细节来维护自定义项的功能。

合并窗体自定义

唯一需要合并的表单自定义是那些在环境中已经存在的表单上执行的自定义。 通常情况下,这意味着只有当您的解决方案自定义了在安装 Dataverse 时创建的表所包含的表单时,才需要合并表单自定义。 避免表单合并的一种方法是为任何 Dataverse 表提供新表单。 除非创建的解决方案更新或修改了创建自定义表及其表单的现有托管解决方案,否则自定义表的表单不需要合并。

当解决方案打包为托管解决方案时,存储在 FormXML 中的表单定义会与原始 FormXML 进行比较,只有不同之处才会包含在托管解决方案中。 在新环境中安装托管解决方案时,表单自定义差异会与现有表单的 FormXML 合并,创建新的表单定义。 此新的窗体定义即为用户看到的定义,也是系统定制员可以修改的定义。 卸载托管解决方案时,仅移除托管解决方案中找到的那些窗体元素。

窗体合并是按部分进行的。 当您将新元素添加到现有选项卡或部分时,所作的更改可能影响或隐藏托管层中的元素,包括在托管元素更新后。 出现此行为的原因在于,托管层位于您要通过自定义引入的非托管层之下。 如果不希望影响或隐藏窗体上的托管元素,建议您将新元素包括在新的容器元素中,如部分或选项卡。这样可以隔离您的元素,减少影响或隐藏托管层中元素的可能性。 详细信息:解决方案层

包含使用新安全角色的窗体的托管解决方案依赖于这些角色。 您应该将这些安全角色包括在托管解决方案中。

当您导入包含表格窗体的解决方案时,即使选择了覆盖自定义设置选项,也不会应用。 要导入的窗体将与窗体的任何现有解决方案层合并。

备注

当托管解决方案表包含多个表单,而环境表表单也包含多个表单时,新表单不会附加到可用表单列表的底部,而是与原始表单交错排列。

确定和解决窗体合并冲突

导入包含表单的解决方案后,您可能会注意到导入的表单会显示一个名为冲突选项卡的选项卡。这是一个自动生成的选项卡,当某些表单组件无法合并时就会创建该选项卡。 为避免数据丢失,无法合并的表单组件会被置于冲突选项卡下。合并冲突通常发生在源定制和目标定制不同步,导致表单定制冲突的情况下。

导入的窗体上的冲突选项卡。

避免以下可能导致窗体合并冲突的情况:

  • 导入两个添加一个组件(如窗体选项卡),但使用同一个序数值的不同解决方案。
  • 在源环境中自定义窗体的一个组件(如节),但是也在目标环境中对该组件进行相同或类似的自定义。 然后,从源环境中导出自定义项,再将其导入目标环境中。

冲突选项卡出现在导入的表单中时,您可以移动表单中显示的组件。 从冲突选项卡移动所有组件后,就可以删除或隐藏冲突选项卡。

合并导航(网站地图)自定义

当解决方案打包为托管时,SiteMap XML 将与原始 SiteMap XML 和对站点地图的任何其他自定义进行比较。 只有不同项才会包括在托管解决方案中。 这些不同项包括更改、移动、添加或移除的项。 在新环境中安装托管解决方案时,站点地图更改会与安装托管解决方案的环境中的 SiteMap XML 合并。 人们会看到一个新的站点地图定义。

此时,定制人员可以将站点地图导出到非托管解决方案,该站点地图定义包括活动站点地图的所有元素。 然后,定制人员可以修改网站地图,并将其作为非托管定制重新导入。 稍后,如果卸载了托管解决方案,将引用随托管解决方案导入的 SiteMap XML 以移除该托管解决方案引入的更改。 然后就会计算出一个新的活动网站地图。

每当有新的可见元素添加到站点地图时,它就会出现在所属容器的底部。 例如,一个新区域会出现在导航区域的底部。 要定位已添加的元素,必须导出网站地图,对其进行编辑以设置元素的精确位置,然后作为非托管解决方案再次导入。

备注

在发布之间只能应用一个网站地图自定义。 在导入新的站点地图定义时,任何未发布的站点地图自定义设置都会丢失。

合并选择列选项

每个新的选择列选项初始化时都会分配一个包含选项值前缀的整数值。 选项值前缀是一组五位数,附加在选项值的前面。 选项值前缀根据解决方案发布商自定义前缀生成,但也可以设置为任何值。 选项值前缀可帮助区分在特定解决方案发布商上下文中创建的新选项集选项,并降低损坏选项值的可能性。 建议使用选项值前缀,但不要求使用。

托管解决方案通常会更新或添加环境中已有的选择列选项,例如账户的类别或行业选择列。 当托管解决方案修改了选择列中的可用选项时,托管解决方案中定义的所有选项都会在环境中可用。 卸载托管解决方案后,选择列中的选项将恢复到原始状态。

合并安全角色权限

当安全角色从托管解决方案导入到环境中时,该安全角色的所有手动添加的权限都将被删除。 但是,权限级别发生更改的安全角色的已修改权限(例如,从基本范围更改为全局范围,反之亦然)将保持不变。

小费

使用相同的自定义解决方案来管理更新安全角色。 如果您使用新的自定义解决方案来更新之前在另一个解决方案中更新的安全角色,则某些权限更新将不会被应用。

不要使用自定义解决方案修改预定义的安全角色。 当系统更新预定义的角色时,将删除这些更新。 创建预定义角色的副本,并在您的自定义解决方案中管理复制的角色。

另请参见

使用解决方案进行自定义