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

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

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

合并窗体自定义

必须要合并的窗体自定义项只有那些要对已存在于环境中的任何实体窗体执行的自定义项。 通常,这意味着对于安装 Dataverse 时创建的实体,仅当您的解决方案自定义这些实体包括的窗体时,才需合并窗体自定义项。 避免窗体合并的一种方法是为任何 Dataverse 实体提供新窗体。 自定义实体的窗体不需要合并,除非您创建更新或修改现有托管解决方案(创建了自定义实体及其窗体)的解决方案。

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

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

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

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

备注

当托管解决方案实体包含多个窗体且环境实体窗体也包含多个窗体时,新的表单则不会追加至可用窗体列表的底部—它们会与原先的实体窗体进行交叉存取。

确定和解决窗体合并冲突

导入包含窗体的解决方案后,您可能会注意到导入的窗体显示了一个名为冲突选项卡的选项卡。这是一个自动生成的选项卡,在某些窗体组件无法合并时创建。 为了避免丢失任何数据,将把无法合并的窗体组件放到“冲突”选项卡下。当源自定义项和目标自定义项无法同步时(这通常会导致窗体自定义项冲突),通常会发生合并冲突。

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

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

  • 导入两个添加一个组件(如窗体选项卡),但使用同一个序数值的不同解决方案。

  • 在源环境中自定义窗体的一个组件(如节),但是也在目标环境中对该组件进行相同或类似的自定义。 然后,从源环境中导出自定义项,再将其导入目标环境中。

当导入的窗体上显示“冲突”选项卡时,您可以将显示的组件移到窗体上的某个位置。 所有组件都从“冲突”选项卡中移出后,可以删除或隐藏“冲突”选项卡。

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

将解决方案打包为托管解决方案时,SiteMap XML 会与原始的 SiteMap XML 以及对 SiteMap 进行的任何其他自定义进行比较。 只有不同项才会包括在托管解决方案中。 这些不同项包括更改、移动、添加或移除的项。 当托管解决方案安装在新的环境中时,SiteMap 更改会与安装托管解决方案所在的环境中发现的 SiteMap XML 进行合并。 新的 SiteMap 定义是用户所能看到的内容。

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

向 SiteMap 添加新的可见元素时,它会显示在任何所属容器的底部。 例如,新区域将显示在导航区域的底部。 若要放置已添加的元素,您必须导出 SiteMap,对其进行编辑以设置元素的精确位置,然后将其重新导入为非托管解决方案。

备注

发布之间只能应用一个 SiteMap 自定义项。 导入新的 SiteMap 定义时,任何未发布的 SiteMap 自定义项都将丢失。

合并选项集选项

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

托管解决方案通常会为已存在于环境中的选项集更新或添加选项,例如,客户的“类别”或“行业”选项集。 当托管解决方案修改选项集中可用的选项时,在托管解决方案中定义的所有选项都将在环境中可用。 卸载托管解决方案时,选项集中的选项将返回至它们的原始状态。

合并安全角色权限

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

小费

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

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

另请参见

使用解决方案进行自定义