环境变量概述

环境变量支持在 Power Platform 环境之间移动应用程序的基本应用程序生命周期管理 (ALM) 方案。 在此方案中,除了源环境和目标环境之间的一些关键外部应用引用(例如表、连接和键)不同之外,应用程序保持完全相同。 应用程序要求源环境和目标环境之间表或连接的结构完全相同,但存在一些差异。 环境变量允许您指定在应用程序跨环境移动时应更新这些不同的外部引用中的哪一个。

环境变量存储参数键和值,这些值然后用作其他各应用程序对象的输入。 将参数与使用的对象分开可以在同一环境中或在将解决方案迁移到其他环境时更改值。 另一种选择是将硬编码参数值保留在使用它们的组件中。 这通常会有问题;特别是需要在ALM 操作期间更改值时。 由于环境变量是解决方案组件,因此,当解决方案迁移到其他环境时,您可以传输引用(键)和更改值。

备注

数据源的新功能现在正在部署,可能在您所在的地区还不可用。

使用环境变量的好处:

  • 将解决方案导入其他环境时提供新的参数值。
  • 存储画布应用和流中使用的数据源的配置。 例如,SharePoint Online 站点和列表参数可以存储为环境变量;因此,您可以连接到不同环境中的不同站点和列表,而无需修改应用和流。
  • 将您的自定义项和配置打包并一起传输,然后在一个位置进行管理。
  • 将机密(如不同组件使用的凭据)与使用它们的组件分开打包和传输。
  • 一个环境变量可以跨很多不同的解决方案组件使用 - 无论它们是相同还是不同类型的组件。 例如,画布应用和流可以使用相同的环境变量。 当环境变量的值需要更改时,只需要更改一个值。
  • 此外,如果您需要在生产环境中停用数据源,可以使用新数据源的信息更新环境变量值。 应用和流不需要修改,它们会开始使用新数据源。
  • SolutionPackagerDevOps 工具支持,可实现持续集成和持续交付 (CI/CD)。
  • 环境变量可以解压缩并存储在源代码管理中。 您还可以为不同环境中所需的单独配置存储不同的环境变量值文件。 然后,解决方案包生成工具可以接受与要导入解决方案的环境相对应的文件。

它们如何工作?

环境变量可以在现代解决方案界面中创建和修改,可以在画布应用中连接到某些数据源时自动创建,也可以使用代码创建。 它们还可以通过解决方案导入到环境。 环境变量出现在环境中后,可以在创作画布应用、Power Automate 流,开发插件时以及其他很多地方(例如将 Power BI 仪表板添加到模型驱动应用),将它们用作输入。 当这些类型的对象使用环境变量时,值将派生自环境变量,在将解决方案导入其他环境时可以更改这些值。

在解决方案中创建环境变量

  1. 登录 Power Apps (make.powerapps.com),然后在左侧窗格中选择解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
  2. 打开需要的解决方案或创建一个新解决方案。
  3. 在命令栏上,选择新建 > 更多,然后选择环境变量
  4. 在右窗格中,完成以下列,然后选择保存
    • 显示名称。 输入环境变量的名称。

    • 名称. 唯一名称会自动从显示名称生成,但您可以更改它。

    • 数据类型。 从十进制数文本JSON两个选项数据源机密中进行选择。

      备注

      • 如果选择类型数据源,还需要选择连接器、所选连接器的有效连接参数类型。 但是,连接不会存储为环境变量的一部分。 连接仅用于检索可用参数值,如您有权访问的 SharePoint 站点或与站点关联的列表。 对于某些参数,如 SharePoint 列表,您还需要选择一个父数据源环境变量,如 SharePoint 站点。 保存后,它们将在数据库中关联。
      • 如果机密是所选类型,需要设置和配置 Azure 密钥保管库所需的其他信息来允许 Power Platform 访问该机密。
    • Current Value。 也称为值。 此属性是可选的,是环境变量值表的一部分。 当存在值时,即使还存在默认值,也会使用此值。 如果您不想在下一个环境中使用它,请从解决方案中删除该值。 这些值还会在导出的 solution.zip 文件中分为单独的 JSON 文件,并且可以脱机编辑。 详细信息:如何从环境变量中删除值?

    • 默认值。 此列是环境变量定义表的一部分,不是必填列。 如果没有当前值,则使用默认值。

      默认值和当前值的分开让您可以将定义和默认值与值分开使用。 例如,应用程序发布者可以使用默认值在 AppSource 上列出其服务。 然后,客户可以选择提供新值。 当应用程序发布者发布对应用程序的更新时,客户设置的值不会覆盖。

      新建环境变量。

      备注

      没有定义值就不会存在。 接口仅允许为每个定义创建一个值。

在导入解决方案时输入新值

现代解决方案导入界面中包含输入环境变量的值这一功能。 这将在 environmentvariablevalue 表上设置值属性。

从 2023 年 12 月 7 日的更新开始,导入解决方案时(或使用管道部署时),所有环境变量值都可见。 系统将提示为没有默认值或值的环境变量输入值,但在其他情况下,那些环境变量将在文本区域下方预先填充一个标签,表示值的来源:解决方案值、目标环境值或默认值。

解决方案导入期间的环境变量可见性。

备注

  • 在某些情况下,对于特定的数据源环境变量值,如果导入者无权访问用于环境变量的连接或源,可能会出现访问被拒绝警告。 这是一个非阻止警告,但需要注意的事项取决于您计划如何在目标环境中使用环境变量。
  • 您可以在导出解决方案之前从解决方案中移删除值。 这样可以确保现有值将保留在您的开发环境中,而不会在解决方案中导出。 此方法允许在将解决方案导入其他环境时提供新值。 详细信息:如何从环境变量中删除值?

通知

当环境变量没有任何值时,将显示一条通知。 这是设置值的提醒,以使依赖于环境变量的组件不会失败。

安全组

environmentvariabledefinition 表由用户或团队负责。 创建使用环境变量的应用程序时,请确保为用户分配此表中适当的特权级别。 environmentvariablevalue 表的权限是从父 environmentvariabledefinition 表继承的,因此不需要单独的特权。 environmentvariabledefinition 表的特权默认包含在环境创建者和基本用户安全角色中。 详细信息:Dataverse 中的安全性

命名

确保环境变量名称是唯一的,以可以准确地引用。 重复的环境变量显示名称使环境变量难以区分和使用。 确保环境变量名称是唯一的,以可以准确地引用。 名称 $authentication$connection 是专门为流保留的参数,应避免使用。 如果使用具有这些名称的环境变量,流保存将受阻止。 如果在流中使用环境变量,当环境变量的显示名称更改时,设计器将同时显示旧的和新的显示名称标记以帮助识别。 更新流时,我们建议您删除环境变量引用,然后重新添加。

当前限制

  • 环境变量值的验证在用户界面和使用它们的组件内进行,但不在 Dataverse 中进行。 因此,如果通过代码修改这些值,请确保设置适当的值。
  • Power Platform Build Tools 任务还不能用于管理数据源环境变量。 但是,这不会阻止它们在 Microsoft 提供的工具和源代码管理系统中的使用。
  • 通过自定义代码与环境变量进行交互需要 API 调用来获取值;没有公开给非 Microsoft 代码使用的缓存。
  • 若要成功将环境变量与 SharePoint 列表一起使用,源和目标环境中每个对应列的显示名称和逻辑名称必须匹配。

常见问题解答

为什么我看不到环境变量的值?

如果环境变量位于托管解决方案中,除非查看默认解决方案内部,否则您将无法看到该值。 此行为是特意这样设计的,因为环境变量值是非托管自定义。

如何查看环境变量正在何处使用?

通过在创作组件时在解决方案界面中选择显示依赖项来查看,或通过查看应用或流元数据在源代码管理和解决方案文件中查看。

数据源环境变量是否与连接相同?

否。 但它们是相关的。 连接表示与连接器进行交互所需的凭据或身份验证。 数据源环境变量存储连接器中一项或多项操作所需的参数,这些参数通常会根据操作而变化。 例如,SharePoint Online 连接不存储有关站点、列表或文档库的任何信息。 因此,调用连接器需要有效的连接和其他一些参数。

数据源环境变量是否可以与共享连接(如使用 SQL 身份验证的 SQL Server)一起使用?

通常不可以。 与 SQL Server 共享的连接存储连接到连接中数据所需的参数。 例如,在创建连接时会提供服务器名和数据库名称,因此它们始终从连接派生。

数据源环境变量用于依赖于基于用户的身份验证的连接器,例如 Microsoft Entra ID,因为无法从连接派生参数。 由于这些原因,使用属于共享连接的 SQL Server 进行身份验证不会使用数据源环境变量。

我的自动 ALM 管道能否为不同的环境使用不同的值文件?

是的。 解决方案包生成工具接受文件名作为输入参数,因此您的管道可以根据要针对其执行的环境类型将不同的值文件打包到解决方案中。

如果有人无意中删除了一个值怎么办?

如果依赖系统尚未阻止,运行时将使用最后一个已知值作为备用值。

如果更改了值,新值何时在画布应用和云端流中使用?

完全发布更新的环境变量可能需要长达一个小时的时间,因为该值将异步推送到应用和流中。

是否需要高级许可证?

不包括。 虽然 ALM 需要 Dataverse(或 Dynamics 365 for Customer Engagement),但不需要使用高级连接器。 如果您使用 Dataverse 连接器来与环境变量进行交互,就像对其他数据记录(如客户或联系人)所做的那样,则需要注意。 以前,这是在画布应用和流中使用环境变量的唯一方法。

我可以有的环境变量数量是否有限制?

不包括。 不过,解决方案的最大大小为 120 MB。 请参阅创建解决方案

环境变量的显示名称和说明是否可以本地化?

是的。

我是否应该使用环境变量,而不是将配置数据存储在自定义表中?

是,如果您的配置数据不是关系数据。 应该将环境变量用于键值对,以及在其他环境中可能需要不同值时。 其他工具(如配置迁移实用程序)更适合迁移自定义表中存储的关系配置数据。 与其他配置数据不同,环境变量在解决方案中迁移,因此更易于管理,导入性能更高。

为什么连接值与导入时要自动分配的连接值不同?

在某些情况下,如果有多个可用于单个(数据源类型)环境变量的连接,则有意在可用于环境变量的连接列表中选择第一个连接。 由于通常只有一个连接与环境变量关联,因此通常不需要验证该连接。 此外,通过最近对环境变量值可见性的更改,这更易于在导入时进行验证。

如何从环境变量中删除值?

您可能希望在导出解决方案前从解决方案中删除环境变量的值。 然后,现有值保留在您的开发环境中,但不会在解决方案中导出。 此方法允许在将解决方案导入另一个环境时提供新值。

要删除此值,请执行以下步骤:

  1. 在环境变量所在的解决方案中,选择环境变量以显示属性。

  2. 当前值下,选择 ... > 从此解决方案中删除

    从环境变量中删除值

我可以在自定义连接器中使用环境变量吗?

可以。 自定义连接器中的环境变量支持

另请参见

在画布应用中使用数据源环境变量
在 Power Automate 解决方案云端流中使用环境变量
EnvironmentVariableDefinition 表/实体引用
Web API 示例
在画布应用中使用数据源环境变量
在 Power Automate 解决方案云端流中使用环境变量
使用 Azure 密钥保管库机密
自定义连接器中的环境变量支持
Power Apps 博客:预览版中可用的环境变量!

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。