解决方案层

解决方案分层在组件级别实现。 托管和非托管解决方案位于 Microsoft Dataverse 环境中的不同层上。 在 Dataverse 中,有两个不同的层:

  • 非托管层所有导入的非托管解决方案和临时自定义项都存在于此层。 所有非托管解决方案共享一个非托管层。

  • 托管层所有导入的托管解决方案和系统解决方案都存在于此级别。 如果安装了多个托管解决方案,则安装的最后一个托管解决方案在之前安装的托管解决方案上面。 也就是说,安装的第二个解决方案可以自定义之前安装的那个解决方案。 当两个托管解决方案的定义相互冲突时,运行时行为要么是“后来者赢”,要么是实现合并逻辑。 如果卸载托管解决方案,则其下方的托管解决方案后生效。 如果卸载所有托管解决方案,则应用系统解决方案中定义的默认行为。 系统层是托管层级的基础。 系统层包含平台运行所需的实体和组件。

组件(如窗体或视图)的解决方案分层示例。

托管解决方案内的分层

对于每个托管组件,解决方案中都有几个层,这些层取决于是否已导入解决方案的一个或多个修补程序或挂起升级,可能包括以下层:

  • 基础层位于解决方案层“堆栈”底部的基础层。 此层包括解决方案发布商,其标识组件的所有者以及与组件关联的托管属性。

  • 顶层顶层被视为当前层,定义组件的运行时行为。 顶层可以是升级或修补程序,如果解决方案未应用修补程序或升级,基础解决方案将确定组件的运行时行为。

  • 从更新添加的层:

    • 修补程序如果组件导入了一个或多个解决方案修补程序,它们将堆积在基础层之上,而最新的修补程序位于前一个修补程序之上。

    • 挂起升级如果导入了分阶段升级(名为 _Upgrade),它将位于基础层和修补程序(如果有)层之上。

解决方案内的分层示例

重要提示

不建议使用修补程序。 详细信息:创建解决方案修补程序

下图显示了自定义列的解决方案层示例,该列显示基本解决方案、修补程序和待进行的升级。

解决方案层。

有关如何查看解决方案内组件的层的信息,请参阅解决方案层

合并行为

解决方案开发者应该了解解决方案更新或安装影响同一组件的多个解决方案时的合并行为。 请注意,将仅合并模型驱动应用、窗体和站点地图组件类型。 所有其他组件均使用“顶级获胜”行为。

“顶级获胜”行为

除了模型驱动应用、窗体和站点地图组件之外,其他解决方案组件会使用“顶级获胜”行为,其中位于最上层的图层决定了组件在应用运行时的工作方式。 顶级图层可以通过阶段性(待定)升级来引入。

待定升级引入的顶级图层

下面是升级更新解决方案阶段引入的顶级获胜组件行为的示例。 详细信息:在目标环境中应用升级或更新

  1. 当前顶级(基础)图层具有使用默认设置为 100 的帐户表的注释文本列的最大长度属性。

    基本解决方案中的表组件。

  2. 解决方案升级是使用升级阶段选项导入的,这将创建一个新的顶级图层。 待定升级包括客户表的注释文本列,其最大长度属性值已更改为 150。

    在基础图层顶部引入的活动图层。

在这种情况下,帐户记录的注释列在应用程序运行时最多将允许 150 个字符。

解决方案更新和升级合并行为

正如前面一节中所述,修补程序和分阶段升级堆积在基础解决方案之上。 这些可以通过从 Power Apps 中的解决方案区域选择应用升级来合并,这将简化层并创建新的基础解决方案。

多解决方案合并行为

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

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

另请参见

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