有关使用解决方案的概述
此主题适用于 Dynamics 365 Customer Engagement (on-premises)。 有关此主题的 Power Apps 版本,请参阅: 解决方案概述
在 Dynamics 365 Customer Engagement (on-premises) 中,解决方案被用来将应用和组件从一个组织传输到另一个组织,或将一组自定义项应用到现有应用。 一个解决方案中可以包含一个或多个应用程序,以及其他组件,如站点地图、实体、流程、Web 资源、选项集等。 可从 AppSource 或独立软件供应商 (ISV) 获取解决方案。 解决方案是一个文件,您可以在环境中作为应用导入或作为一组自定义项应用到现有应用。
详细信息:白皮书:解决方案构建者的模式和原则
如果您是创建要分发的应用的 ISV,则需要使用解决方案。 有关使用解决方案的详细信息,请参阅使用解决方案打包和分发扩展。
解决方案组件
解决方案组件代表您有可能自定义的某些事项。 可以包括在解决方案中的任何东西就是一个解决方案组件。 若要查看解决方案中包含的组件,请在解决方案资源管理器中转到设置>解决方案,然后打开所需解决方案。 这些组件包含在组件列表中。
大多数解决方案组件嵌套在其他解决方案组件中。 例如,实体包含窗体、视图、图表、字段、实体关系、消息和业务规则。 其中的每个解决方案组件都需要存在一个实体。 字段不能存在于实体之外。 我们称之为字段依赖于实体。 实际的解决方案组件类型的数量是之前列表中所示的两倍,但其中大多数不在应用程序中显示。
拥有解决方案组件的目的是跟踪对我们可以使用托管属性以及所有解决方案依赖项自定义的内容的所有限制,从而可以将其导出、导入和(在托管解决方案中)删除,而不会有任何遗漏。
托管和非托管解决方案
在将托管解决方案导入后,可以将其卸载。 可以通过卸载解决方案来删除该解决方案的所有组件。
在导入非托管解决方案时,可以将该解决方案的所有组件添加到您的默认解决方案中。 无法通过卸载解决方案删除组件。
在导入包含您已经自定义的解决方案组件的非托管解决方案时,您的自定义项将被非托管解决方案中的自定义项覆盖。 此操作无法撤消。
重要提示
请仅在需要将所有组件添加到您的默认解决方案并覆盖所有现有的自定义项时,安装非托管解决方案。
即使您不打算分发您的解决方案,也可能需要创建并使用非托管解决方案,以便拥有一个仅包含您已经自定义的那部分应用程序的单独视图。 只要进行了自定义,就要将其添加到所创建的非托管解决方案。
在创建托管解决方案时,要在导出解决时选择托管解决方案选项。 如果您创建托管解决方案,则无法将其重新导入到用于创建该解决方案的同一个组织。 您只能将其导入到其他组织中。
如何应用解决方案
所有解决方案都作为层进行评估,以确定您的应用实际要执行的内容。 下图展示了托管和非托管解决方案的评估方式,以及其中的更改在组织中的显示方式。
从底部开始向上
系统解决方案
系统解决方案就像每个组织都有的托管解决方案。 系统解决方案是系统中所有现成的组件的定义。
托管解决方案
托管解决方案可以修改系统解决方案组件,并可添加新组件。 如果安装了多个托管解决方案,则安装的第一个托管解决方案在后安装的托管解决方案下面。 也就是说,安装的第二个解决方案可以自定义之前安装的那个解决方案。 当两托管解决方案的定义有冲突时,一般规则是“后来者赢”。如果卸载托管解决方案,则其下方的托管解决方案后生效。 如果卸载所有托管解决方案,则应用系统解决方案中定义的默认行为。
非托管自定义项
非托管自定义项是通过非托管解决方案对组织所做的任何更改。 系统解决方案定义您能或不能使用托管属性自定义的内容。 托管解决方案的发布商具有相同的能力,可以限制您对他们在其解决方案中添加的解决方案组件的自定义能力。 您可以自定义没有阻止您自定义它们的托管属性的任何解决方案组件。
应用程序行为
这是您可在组织中实际看到的内容。 默认系统解决方案以及托管解决方案,加上已经应用的任何非托管自定义项。
托管属性
有些组件不能自定义。 系统解决方案中的这些组件具有阻止您自定义它们的元数据。 这此元数据称为托管属性。 托管解决方案的发布商还可以设置托管属性,从而阻止您通过他们不希望您采用的方式来自定义其解决方案。
解决方案依赖项
由于托管解决方案分层方式的原因,有些托管解决方案可能会依赖其他托管解决方案中的解决方案组件。 有些解决方案发布商会利用这一点来构建模块化的解决方案。 您可能需要先安装“基本”托管解决方案,然后再安装一具托管解决方案以进一步自定义基本托管解决方案中的组件。 第二个托管解决方案依赖于第一解决方案中的解决方案组件。
系统会跟踪解决方案之间的这些依赖关系。 如果您尝试安装的解决方案需要未安装的某个基本解决方案,则将无法安装该解决方案。 您将收到一条消息,指示该解决方案需要先安装另一个解决方案。 同样,由于依赖关系,当仍然安装了依赖于基本解决方案的解决方案时,将无法卸载基本解决方案。 您必须先卸载依赖的解决方案,然后才能卸载基本解决方案。