Power Platform 的环境变量概述

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

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

使用环境变量的好处:

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

环境变量如何工作?

环境变量可以在现代解决方案界面中创建和修改。 在连接到画布应用程序或代码中的某些数据源时,也可以自动创建环境变量。 它们还可以通过解决方案导入到环境。 在编写画布应用程序、Power Automate 流、插件以及向模型驱动应用程序添加Power BI 仪表板时,可以将环境变量用作输入。 使用环境变量后,值将从环境变量中导出,并可在将解决方案导入其他环境时进行更改。

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

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

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

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

      备注

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

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

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

      新建环境变量。

      备注

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

Power Apps 可以自动创建环境变量

在 Power Apps 设置的常规选项卡上:

  • 启用添加数据源时自动创建环境变量选项。 现在,当您向应用添加新数据源时,它会为您添加一个环境变量。

    自动创建环境变量。

不同的数据源

不同的数据源启用不同类型的环境变量。

Microsoft Dataverse

Power Apps 本机连接至 Dataverse。 当前环境中的表不需要环境变量。 连接到 Dataverse 时,应用程序会自动在移植到的任何环境中查找完全相同的表名。 只要您的表名结构在目标环境中与在原始环境中相同,它就可以工作。

如果您使用不同环境中的外部表(通过更改环境),Power Apps 会假定您希望始终引用完全相同的表。 如果从开发环境转到测试环境或生产环境时,外部表需要是不同的外部表,那么就需要一个环境变量。最简单的方法是让 Power Apps 自动为您创建环境变量。 (如果您之前已将表添加到应用,请打开设置开关,删除外部表,然后重新添加。

在应用程序中添加外部表时,选择高级选项卡来选择环境变量。

外部环境 Dataverse 环境变量。

SharePoint

SharePoint 仅支持 Microsoft Entra 连接。 因此,对于 SharePoint,除了有效连接外,Site 和 List 还需要单独的环境变量。

要成功地在 SharePoint 列表中使用环境变量,请注意以下几点

  • 源环境和目标环境中每个相应列的显示名称和逻辑名称必须匹配。
  • SharePoint 的环境变量必须有匹配的元数据。 SharePoint 的内部标识符在目标环境之间可能不匹配。 例如,如果在目标环境中创建具有相同名称和列的列表,则内部名称将不匹配。 如果复制 SharePoint 站点并将其复制到目标环境,则元数据始终匹配。

SQL Server

SQL Server 支持许多不同类型的身份验证和连接。 对 Microsoft Entra 连接使用环境变量。 服务器和数据库需要单独的环境变量。 应用程序绑定到特定的表名,因此假定它们在环境之间是相同的。

不要将环境变量用于共享连接,如 SQL Server 的基本 SQL 验证。 对传统上作为连接字符串的一部分传递的信息使用连接引用。 基本 SQL 身份验证参数都是连接字符串的一部分。 例如,在创建连接时会提供服务器名和数据库名称,因此它们始终从连接派生。

数据源环境变量用于带有 Microsoft Entra 身份验证的连接器。 在这些类型的连接中,Power Apps 只有一个确定的用户。 Power Apps 无法从连接中推导出您要使用的服务或表。

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

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

在导入解决方案或使用管道部署时,环境变量值是可见的。 系统将提示为没有默认值或值的环境变量输入值,但在其他情况下,那些环境变量将在文本区域下方预先填充一个标签,表示值的来源:解决方案值、目标环境值或默认值。

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

备注

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

通知

当环境变量没有任何值时,将显示一条通知。 设置这些值可避免依赖于环境变量的组件出现故障。

安全组

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

命名

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

当前限制

  • 环境变量值的验证在用户界面和使用它们的组件内进行,但不在 Dataverse 中进行。 因此,如果通过代码修改这些值,请确保设置适当的值。
  • Power Platform Build Tools 任务还不能用于管理数据源环境变量。 但是,这不会阻止它们在 Microsoft 提供的工具和源代码管理系统中的使用。
  • 通过自定义代码与环境变量进行交互需要 API 调用来获取值;没有公开给非 Microsoft 代码使用的缓存。
  • 环境变量限制为最多 2,000 个字符。

常见问题解答

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

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

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

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

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

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

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

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

我是否应该在解决方案中包含该值?

不能。 环境变量用于需要在部署解决方案的不同环境中具有不同值的应用程序。 环境变量定义应包含在解决方案中,但其值应在部署过程中提供给目标环境。 这种行为会导致环境变量定义在目标环境中成为受管解决方案对象,而环境变量则是非受管记录。

为什么我无法删除环境中的值?

如果值是在托管解决方案中,删除该值的唯一方法是更新源环境中的解决方案来排除该值,然后导出解决方案的新版本。 然后可以使用升级操作(不是更新)将此版本导入到环境,值记录最后被删除。

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

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

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

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

是否需要高级许可证?

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

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

不包括。 不过,解决方案的最大大小为 95 MB。 详细信息:创建解决方案

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

是的。

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

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

为什么没有保存我的数据源环境变量连接?

连接仅用于生成用户界面。 例如,检索与站点关联的 SharePoint 列表的易记名称。 编辑数据源环境变量时,务必选择有权访问数据源的连接。 如果您不再有访问连接的权限,可以手动输入一个值。 例如,输入列表的 SharePoint 站点 URL 或唯一标识符 (GUID)。

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

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

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

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

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

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

    从环境变量中删除值

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

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

另请参见

在画布应用中使用数据源环境变量
在 Power Automate 解决方案云端流中使用环境变量
EnvironmentVariableDefinition 表/实体引用
Web API 示例
在画布应用中使用数据源环境变量
在 Power Automate 解决方案云端流中使用环境变量
使用 Azure Key Vault 机密
在自定义连接器中支持环境变量
Power Apps 博客:环境变量已经提供预览!