解决方案简介

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

“解决方案”是指定制员和开发人员如何编写、打包和维护用于扩展 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 的各套软件。 定制员和开发人员可以分发解决方案,以便组织能够使用 Microsoft Dynamics 365 安装和卸载由解决方案定义的业务功能。

本主题内容

扩展性选项

版本兼容性

解决方案组件

非托管和托管解决方案

托管属性

冲突解决

依赖项跟踪

对多语言的支持

扩展性选项

使用解决方案可扩展 Microsoft Dynamics 365 的功能。 对于在应用程序外部运行的软件(如安装程序),可使用传统方法打包和安装您的应用程序。

如果您的应用程序仅包含 Microsoft Dynamics 365 解决方案组件,则可以将其直接导入 Dynamics 365。 您将不必创建安装程序。

具有外部组件的应用程序

但是,如果您的扩展包括 Microsoft Dynamics 365 解决方案组件和外部组件(并非 Microsoft Dynamics 365 解决方案组件)的组合,则需要安装程序。

例如,您可以使用 Web 服务 API 创建 .NET Framework 应用程序来管理存储在自定义 Microsoft Dynamics 365 实体中的数据。 安装您的应用程序的用户可以安装 Microsoft Dynamics 365 解决方案以创建自定义实体,然后使用安装程序单独安装您的应用程序。 或者,您可以将 Microsoft Dynamics 365 解决方案的安装包括在为您的应用程序创建的安装程序中。

版本兼容性

如下图所示,从 Dynamics 365 早期版本导出的解决方案可导入到更新版本。

CRM 2015 解决方案兼容性

通常,解决方案可以导入到高于解决方案导出版本且版本少于两个的组织。 Service Pack 版本将提供两个选择:导出具有该 Service Pack 兼容性的解决方案,或只具有基本版本包含的兼容性。详细信息:版本兼容性

对于 Microsoft Dynamics CRM 2013 Service Pack 1 (SP1),加入了用于新 Microsoft Dynamics CRM Online 组织的增强服务功能,现有 Microsoft Dynamics 365 组织可以选择是否安装这些功能。 除非解决方案选择使用选择基础版本兼容性来导出,否则从组织导出具有增强功能兼容性的解决方案,无法安装到未启用增强服务兼容性的 CRM 2013 SP1 组织。详细信息:使用产品更新检测可用的增强服务功能

解决方案组件

解决方案组件是使用 Microsoft Dynamics 365 中包括的自定义工具或 API 创建的,并且完全由应用程序进行托管。 下图显示解决方案组件的类型。

解决方案组件

当您定义 Dynamics 365 解决方案时,可创建一组可以一起管理的解决方案组件。

备注

解决方案仅可添加新的解决方案组件或覆盖现有解决方案组件。 解决方案不能用于删除解决方案组件。

非托管和托管解决方案

Microsoft Dynamics 365 解决方案具有两种类型:托管非托管。 托管解决方案是可分发和安装的完整解决方案。 非托管解决方案是指仍在开发或不能进行分发的解决方案。 当要分发已完成的非托管解决方案时,您可以将其导出并打包为托管解决方案。

下图演示托管和非托管解决方案如何与系统解决方案进行交互以控制应用程序的行为。

解决方案层

  • 系统解决方案
    系统解决方案表示在 Microsoft Dynamics 365 中定义的解决方案组件。 在没有任何托管解决方案或自定义项的情况下,系统解决方案会定义默认的应用程序行为。

    系统解决方案中的许多组件都可以自定义,并且可在托管解决方案或非托管自定义项中使用。

  • 托管解决方案
    托管解决方案在系统解决方案的基础上安装,并可以修改任何可自定义的解决方案组件或添加更多的解决方案组件。

    托管解决方案也可以在其他托管解决方案的基础上分层部署。 只要某个托管解决方案允许在其中自定义解决方案组件,就可以在它的基础上安装其他托管解决方案,并修改它所提供的任何可自定义的解决方案组件。

  • 非托管自定义项
    可以在非托管自定义项中自定义由系统解决方案或任何托管解决方案提供的所有可自定义的解决方案组件。

  • 非托管解决方案
    非托管解决方案是指非托管自定义项组。 任何非托管自定义解决方案组件可以与任何数量的非托管解决方案相关联。

    您可以导出非托管解决方案并选择将其打包为托管解决方案,以创建托管解决方案。

  • 应用程序行为
    针对特定组织的 Microsoft Dynamics 365 实例的最终行为是系统解决方案、托管解决方案和任何非托管自定义的终点。

非托管解决方案

当某个解决方案处于非托管状态时,您可以执行以下操作:

  • 添加组件。

  • 移除组件。

  • 删除允许删除的组件。

  • 导出和导入非托管解决方案。

  • 将解决方案导出为托管解决方案。

详细信息:创建、导出或导入非托管解决方案

导入非托管解决方案

当您导入非托管解决方案时,可以在新组织中编辑其组件。

重要

当您导入非托管解决方案时,组织中已存在的任何解决方案组件的定义都将被覆盖。 您无法“撤销”此操作。

非托管自定义项

每个 Microsoft Dynamics 365 组织都包含可自定义的解决方案组件。 总之,所有这些解决方案组件都称为“默认解决方案”。 这是您在应用程序中选择“自定义系统”时所编辑的解决方案。 您可以像在非托管解决方案中一样导出此解决方案和其中的自定义。 但是,您无法将默认解决方案导出为托管解决方案。

创建非托管解决方案

如果您不打算生成托管解决方案,则无需创建非托管解决方案。 您可以直接自定义系统。 只希望可以编辑、备份和传输其自定义的组织不必使用更高级的 Microsoft Dynamics 365 解决方案框架功能。

当您创建非托管解决方案时,可以创建一种对可用自定义解决方案组件子集进行分组的方法。 非托管解决方案中的解决方案组件是对组织中可自定义的解决方案组件的引用。

在创建非托管解决方案之后,您可以向其中添加解决方案组件。 通过使用这个较小的组件集,您可以决定只包括那些与特定功能相关的解决方案组件。 这将允许您在导出自己的解决方案并创建一组管理性更强的组件时,使用较小的包。

添加到非托管解决方案的任何组件还包括在系统的可自定义解决方案组件中。 可以将非托管解决方案组件添加到多个非托管解决方案中。

重要

因为每个非托管解决方案都包含对共享解决方案组的引用,所以您对某个解决方案中的解决方案组件所做的更改也将应用于引用这些解决方案组件的所有非托管解决方案。

提示

您也可以创建非托管解决方案,仅仅为了能够方便地访问特定的解决方案组件。 例如,您可以使用大量的 HTML Web 资源,但只有其中一部分资源代表您的解决方案中的顶级用户界面元素。 您可能希望创建只包括那些顶级用户界面组件的非托管解决方案,以便可以轻松地找到并打开这些组件。

非托管解决方案的解决方案发布商

每个解决方案都需要解决方案发布商。 对于非托管解决方案,解决方案发布商会提供常见的自定义前缀和选项值前缀。详细信息:创建解决方案发布商

许多解决方案可以与一个解决方案发布商相关联。 每个组织都具有一个解决方案发布商,被称为“<OrganizationUniqueName> 默认发布商”。 如果要使所有非托管解决方案共享相同的自定义前缀和选项值前缀,建议您只将非托管解决方案与组织的默认发布商相关联。

备注

解决方案发布商控制如何更新托管解决方案。 当安装托管解决方案时,发布商是可见的,但您无法将非托管解决方案与其相关联。 如果您想要分发托管解决方案,请参阅托管解决方案的解决方案发布商。

删除非托管解决方案

如果您删除非托管解决方案,则只需删除用于包含引用解决方案组件的组。 非托管解决方案中的解决方案组件将保留在系统中,但这些组件不再与所删除的非托管解决方案相关联。

备注

如果您删除非托管解决方案中的解决方案组件,则该组件将会从系统中删除,并且在任何其他非托管解决方案中都不再可用。 如果您只想从非托管解决方案中删除解决方案组件,请使用“移除”而不是“删除”。

托管解决方案

如果您想要将自己的解决方案作为托管解决方案进行分发,请导出您的非托管解决方案,然后选择“包类型”对话框中的“托管”选项。

备注

在生成托管解决方案之后,您无法将其安装在包含用于创建它的非托管解决方案的同一个 Microsoft Dynamics 365 组织中。 必须将其安装在其他组织中。

在安装托管解决方案之后,以下各项均适用:

  • 您无法添加或删除托管解决方案中的解决方案组件。

  • 您无法导出托管解决方案。

  • 删除托管解决方案会卸载其中的所有解决方案组件。

有关使用托管解决方案执行的特定任务的详细信息,请参阅 创建、安装和更新托管解决方案

在安装托管解决方案之后,如果该托管解决方案的创建者已将托管解决方案配置为启用,则您可以自定义解决方案组件。 您必须使用“自定义系统”而不是通过托管解决方案本身来访问可自定义的解决方案组件。

对于解决方案组件是否可自定义以及启用哪些特定的自定义操作,均可通过使用托管属性来控制。

托管解决方案的解决方案发布商

当您想要分发托管解决方案时,将会在安装您的解决方案的每个组织中创建与您的托管解决方案相关联的解决方案发布商记录。 使用解决方案发布商可提供有关安装您的解决方案的用户如何与您取得联系的信息。

如果要发行对您的托管解决方案的某项更新,则托管解决方案的解决方案发布商同样重要。 如果您使用同一个解决方案发布商,则可以创建一个新的托管解决方案,以便能够更新先前所发行的托管解决方案。详细信息:维护托管解决方案

托管属性

使用托管属性时,托管解决方案的创建者可以控制是否可自定义解决方案组件以及可以自定义它的哪些特定部分。

备注

托管属性必须在非托管解决方案中进行设置。 只有在对托管解决方案进行打包和安装之后,才会应用托管属性设置。

可用的确切托管属性取决于解决方案组件的类型。 以下屏幕截图显示自定义实体的托管属性。

实体的托管属性

默认情况下,托管属性设置会假定任何类型的解决方案组件都可完全自定义。 建议解决方案开发人员在其可自定义的解决方案中启用解决方案组件。 但是,存在以下情况:必须“锁定”解决方案组件的定义以避免发生潜在的重大更改,或者让解决方案组件的将来维护变得更容易些。

详细信息:使用托管属性

冲突解决

当两个或更多的解决方案以不同的方式定义解决方案组件时,Microsoft Dynamics 365 会使用两种策略解决冲突,即“合并”和“靠上优先”。 以下关系图阐明了它们的不同之处。

两个解决方案冲突解决策略

  • 合并​​
    用户界面组件(命令栏、窗体和站点地图)已合并。 这意味着将会从最低级别到最高级别重新计算解决方案组件,以便最后应用组织的非托管自定义项。

  • 靠上优先
    对于所有其他解决方案组件,将会针对最后应用的自定义项计算任何冲突。 对于托管解决方案,这通常意味着将会应用最后安装的解决方案。 但是,在安装托管解决方案的更新时会出现特殊情况。

针对托管解决方案更新的冲突解决

因为就解决冲突而言,会认为非托管自定义项“优于”任何托管解决方案,所以安装托管解决方案更新的组织可能会由于非托管修改而看不到所应用的更改。 为此提供了一个选项,用于确保通过托管解决方案的更新所应用的更改可用。

当发行托管解决方案的更新时,安装此更新的组织可以选择:

  • 保留您在托管解决方案基础上应用的所有自定义。

  • 覆盖您在托管解决方案基础上应用的所有自定义。

安装托管解决方案更新的各个组织应与托管解决方案创建者合作,以评估最适合于他们的选项。

重要

即使选择了覆盖选项,也不会覆盖对实体窗体和站点地图所做的更改。 参考 合并窗体自定义合并导航(网站地图)自定义 中的更改管理指南。 可能需要进行一些手动自定义,将非托管的自定义项合并到包含在托管解决方案里的更改中。

依赖项跟踪

解决方案框架会自动跟踪解决方案组件的依赖项。 对解决方案组件执行的每项操作都会自动计算系统中其他组件的任何依赖项。 依赖项信息用于维护系统的完整性并阻止可能导致状态不一致的操作。

通过依赖项跟踪可强制执行以下行为:

  • 如果系统中的其他组件依赖于某个组件,则会防止删除该组件。

  • 如果在将某个解决方案导入其他系统时缺少任何组件从而可能导致失败,则导出解决方案时会警告用户。

    如果解决方案开发人员只想将解决方案安装在预期存在依赖组件的组织中,则可以忽略导出期间发出的警告。 例如,在创建旨在通过预先安装的基本解决方案进行安装的解决方案时。

  • 如果必需组件不包含在解决方案中,并且这些组件也不存在于目标系统中,则解决方案的导入将会失败。

    • 此外,在导入托管解决方案时,所有必需组件都必须与该解决方案的包类型相匹配。 托管解决方案中的组件只能依赖于其他托管组件。

详细信息:解决方案组件的依赖项跟踪

对多语言的支持

Microsoft Dynamics 365 本机支持多种语言。 每次安装语言包(有时称为“MUI 包”)时,用户界面元素都可以采用不同的语言进行显示。

根据您的解决方案中包括的解决方案组件的类型,可应用多种不同的策略。详细信息:创建支持多种语言的解决方案。

另请参阅

使用解决方案打包和分发扩展
解决方案生成器的 Microsoft Dynamics CRM Online 模式和原理
解决方案开发的规划
解决方案组件的依赖项跟踪
创建、导出或导入非托管解决方案
创建、安装和更新托管解决方案
卸载或删除解决方案
创建支持多种语言的解决方案。
解决方案实体
使用解决方案
示例:解决方案的操作
示例:检测解决方案依赖项
解决方案实体

© 2017 Microsoft。 保留所有权利。 版权