Power Platform 的环境变量概述
环境变量支持在 Power Platform 环境之间移动应用程序的基本应用程序生命周期管理 (ALM) 方案。 在此方案中,除了源环境和目标环境之间的一些关键外部应用引用(例如表、连接和键)不同之外,应用程序保持完全相同。 应用程序要求源环境和目标环境之间表或连接的结构完全相同,但存在一些差异。 环境变量允许您指定在应用程序跨环境移动时应更新这些不同的外部引用中的哪一个。
环境变量存储参数键和值,这些值然后用作其他各应用程序对象的输入。 将参数与使用的对象分开可以在同一环境中或在将解决方案迁移到其他环境时更改值。 另一种选择是将硬编码参数值保留在使用它们的组件中。 这通常会有问题;特别是需要在ALM 操作期间更改值时。 由于环境变量是解决方案组件,因此,当解决方案迁移到其他环境时,您可以传输引用(键)和更改值。
备注
数据源的新功能现在正在部署,可能在您所在的地区还不可用。
使用环境变量的好处:
- 在将解决方案导入其他环境时提供新的参数值。
- 存储画布应用和流中使用的数据源的配置。 例如,SharePoint Online 站点和列表参数可以存储为环境变量;因此,您可以连接到不同环境中的不同站点和列表,而无需修改应用和流。
- 将您的自定义项和配置打包并一起传输,然后在一个位置进行管理。
- 将机密(如不同组件使用的凭据)与使用它们的组件分开打包和传输。
- 一个环境变量可以跨很多不同的解决方案组件使用 - 无论它们是相同还是不同类型的组件。 例如,画布应用和流可以使用相同的环境变量。 当环境变量的值需要更改时,只需要更改一个值。
- 此外,如果您需要在生产环境中停用数据源,可以使用新数据源的信息更新环境变量值。 应用和流不需要修改,将开始使用新数据源。
- 由 SolutionPackager 和 DevOps 工具支持,可实现持续集成和持续交付 (CI/CD)。
- 环境变量可以解压缩并存储在源代码管理中。 您还可以为不同环境中所需的单独配置存储不同的环境变量值文件。 然后,解决方案包生成工具可以接受与要导入解决方案的环境相对应的文件。
环境变量如何工作?
环境变量可以在现代解决方案界面中创建和修改,可以在画布应用中连接到某些数据源时自动创建,也可以使用代码创建。 它们还可以通过解决方案导入到环境。 环境变量出现在环境中后,可以在创作画布应用、Power Automate 流,开发插件时以及其他很多地方(例如将 Power BI 仪表板添加到模型驱动应用),将它们用作输入。 当这些类型的对象使用环境变量时,值将派生自环境变量,在将解决方案导入其他环境时可以更改这些值。
在解决方案中创建环境变量
- 登录 Power Apps (make.powerapps.com),然后在左侧窗格中选择解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
- 打开需要的解决方案或创建一个新解决方案。
- 在命令栏上,选择新建>更多,然后选择环境变量。
- 在右窗格中,完成以下列,然后选择保存:
显示名称。 输入环境变量的名称。
名称. 唯一名称会自动从显示名称生成,但您可以更改它。
数据类型。 从十进制数、文本、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 列表一起使用,源和目标环境中每个对应列的显示名称和逻辑名称必须匹配。
- 环境变量限制为最多 2,000 个字符。
常见问题解答
为什么我看不到环境变量的值?
如果环境变量位于托管解决方案中,除非查看默认解决方案内部,否则您将无法看到该值。 此行为是特意这样设计的,因为环境变量值是非托管自定义。
如何查看环境变量正在何处使用?
通过在创作组件时在解决方案界面中选择显示依赖项来查看,或通过查看应用或流元数据在源代码管理和解决方案文件中查看。
数据源环境变量是否与连接相同?
不包括。 虽然它们相关,但连接表示与连接器进行交互所需的凭据或身份验证。 数据源环境变量存储连接器中一项或多项操作所需的参数,这些参数通常会根据操作而变化。 例如,SharePoint Online 连接不存储有关站点、列表或文档库的任何信息。 因此,调用连接器需要有效的连接和其他一些参数。
数据源环境变量是否可以与共享连接(如使用 SQL 身份验证的 SQL Server)一起使用?
通常不可以。 与 SQL Server 共享的连接存储连接到连接中数据所需的参数。 例如,在创建连接时会提供服务器名和数据库名称,因此它们始终从连接派生。
数据源环境变量用于依赖于基于用户的身份验证的连接器,例如 Microsoft Entra ID,因为无法从连接派生参数。 由于这些原因,使用属于共享连接的 SQL Server 进行身份验证不会使用数据源环境变量。
我的自动 ALM 管道能否为不同的环境使用不同的值文件?
是的。 解决方案包生成工具接受文件名作为输入参数,因此您的管道可以根据要针对其执行的环境类型将不同的值文件打包到解决方案中。
我应当将值包括在解决方案中吗?
不包括。 环境变量适用于需要在部署解决方案的不同环境中具有不同的值的应用程序。 应在解决方案中包括环境变量定义,但是应在部署期间为目标环境提供值。 此行为会导致环境变量定义成为目标环境中托管解决方案对象,而环境变量是非托管记录。
为什么我无法删除环境中的值?
如果值是在托管解决方案中,删除该值的唯一方法是更新源环境中的解决方案来排除该值,然后导出解决方案的新版本。 然后可以使用升级操作(不是更新)将此版本导入到环境,值记录最后被删除。
如果有人无意中删除了一个值怎么办?
如果依赖系统尚未阻止,运行时将使用最后一个已知值作为备用值。
如果更改了值,新值何时在画布应用和云端流中使用?
完全发布更新的环境变量可能需要长达一个小时的时间,因为该值将异步推送到应用和流中。
是否需要高级许可证?
不包括。 虽然 ALM 需要 Dataverse(或 Dynamics 365 应用),但不需要使用高级连接器。 如果您使用 Dataverse 连接器来与环境变量进行交互,就像对其他数据记录(如客户或联系人)所做的那样,则需要注意。 以前,这是在画布应用和流中使用环境变量的唯一方法。
我可以有的环境变量数量是否有限制?
不包括。 不过,解决方案的最大大小为 95 MB。 详细信息:创建解决方案
环境变量的显示名称和说明是否可以本地化?
是的。
我是否应该使用环境变量,而不是将配置数据存储在自定义表中?
是,如果您的配置数据不是关系数据。 应该将环境变量用于键值对,以及在其他环境中可能需要不同值时。 其他工具(如配置迁移实用程序)更适合迁移自定义表中存储的关系配置数据。 与其他配置数据不同,环境变量在解决方案中迁移,因此更易于管理,导入性能更高。
为什么没有保存我的数据源环境变量连接?
连接仅用于生成用户界面。 例如,检索与站点关联的 SharePoint 列表的易记名称。 编辑数据源环境变量时,务必选择有权访问数据源的连接。 如果不再有权访问连接,可以手动输入值。 例如,输入列表的 SharePoint 站点 URL 或唯一标识符 (GUID)。
如果有多个连接可用于单个(数据源类型)环境变量,设计的实现是选择连接列表中的第一个连接。 由于通常只有一个连接与环境变量关联,因此通常不需要验证该连接。 此外,通过最近对环境变量值可见性的更改,这更易于在导入时进行验证。
如何从环境变量中删除值?
您可能希望在导出解决方案前从解决方案中删除环境变量的值。 然后,现有值保留在您的开发环境中,但不会在解决方案中导出。 此方法允许在将解决方案导入另一个环境时提供新值。
要删除此值,请执行以下步骤:
在环境变量所在的解决方案中,选择环境变量以显示属性。
在当前值下,选择 ...>从此解决方案中删除。
我可以在自定义连接器中使用环境变量吗?
可以。 自定义连接器中的环境变量支持
另请参见
在画布应用中使用数据源环境变量
在 Power Automate 解决方案云端流中使用环境变量
EnvironmentVariableDefinition 表/实体引用
Web API 示例
在画布应用中使用数据源环境变量
在 Power Automate 解决方案云端流中使用环境变量
使用 Azure Key Vault 机密
在自定义连接器中支持环境变量
Power Apps 博客:环境变量已经提供预览!