使用 YAML

已完成

解压缩应用后,可以使用 YAML 的子集在文本文件中存储提取的公式。 YAML 是用户友好的数据序列化语言。 目标是简化读取和写入源的流程,并确定版本之间的差异。 此外,如果遵循已采用的 Microsoft Power Fx YAML 公式惯例,则可使用任何文本编辑器编辑这些文件。

以下标签控件表示为 YAML:

   LblAppName1 As label:
        Fill: =RGBA(58, 58, 58, 0)
        Height: =88
        Size: =27
        Text: ="Companies"
        Width: =Parent.Width - Self.X - IconSortUpDown1.Width - IconNewItem1.Width - IconRefresh1.Width
        Wrap: =false
        X: =20
        ZIndex: =2

YAML 使用键/值对表示数据,并且它支持嵌套对。 例如,像 lblAppName1 这样的项可以具有填充高度大小等的缩进键/值对。 YAML 使用缩进来确定结构。 空格用于缩进,但不允许使用制表符。

在 YAML 中嵌入 Power Fx 公式的三个独特方面:

  • 使用 As 关键字键入控件。 您可以定义标签控件,例如在上一个示例中使用的是 lblAppName1 as Label: 表达式。 通常,当您提供属性值时,YAML 的冒号 (:) 左侧只有一个名称。 但是,YAML 规范中没有任何内容会排除更复杂的左侧表达式,并且 Power Fx YAML 语法利用本省略来为属性命名并提供其类型。

  • 所有公式都以等号开头。 Microsoft Excel 与此类似,等号 (=) 引入公式而不是静态值。 无需在 Power Apps Studio 中键入开头的等号 (=),但如果加以注意,会发现它始终位于公式栏中。 此外,开头的等号 (=) 符号可帮助避免 YAML 对静态值执行的正常数据类型解释,而静态值不适用于公式。

  • 某些公式必须用 YAML 多行语法表示。 如果有包含嵌入了 # 字符串的公式,则 YAML 将其解释为注释的开始;因此,该行的其余部分将截断。 要避免发生此类事件,请确保使用 YAML 的多行语法来表达公式;最常见的是使用 | 语法。

有关详细信息,请参阅 Microsoft Power Fx YAML 公式语法

文件夹结构

当解压缩画布应用时,将创建一组文件和文件夹。 运行解压缩包流程后,您将找到以下密钥文件和文件夹:

  • \src - 控件和组件文件。 本文件包含源。

  • *.fx.yaml - 从 control.json 文件中提取的公式。 本位置是可以编辑公式的位置。

  • CanvasManifest.json - 包含标题、属性和 publishInfo 中的常规内容的清单文件。

  • *.json - 原始 control.json 文件。

  • \EditorState*.editorstate.json - 缓存 Power Apps Studio 要使用的信息。

  • \DataSources - 应用使用的所有数据源。

  • \连接 - 连接实例,这些实例已与本应用一起保存,并在重新加载到 Power Apps Studio 时使用。

  • \Assets - 嵌入在应用中的媒体文件。

  • \pkgs - 已下载的外部引用副本,如模板、API 定义文件和组件库。 这些文件与 nuget/npm 引用相似。

  • \other - 重新创建 .msapp 文件所需的所有其他文件。

  • entropy.json - 将波动元素(如时间戳)提取到本文件。 本文件有助于减少其他文件中的噪音差异,同时确保您仍可以往返。 保留 .msapp 文件中的其他文件,例如引用中的内容。

文件格式

*.fx.yaml 结尾的文件是可以编辑公式的位置。 在浏览提取的文件时,您会发现并非所有文件都包含 YAML;很多都采用原生格式,不能在 Power Apps Studio 之外进行编辑。

合并源更改

通过解压缩启用的一个应用场景是,多人编辑应用并合并源代码管理中的更改的功能。 在本应用场景中,您将想最小化冲突。 例如,在同一控件上编辑公式可能会导致冲突,但两个人编辑不同屏幕的场景不太可能发生。

如果在云中创建应用程序,下载该应用然后对其进行编辑,请知道,在上传重新打包的版本时,它将覆盖由于下载而对云版本所做的任何更改。

在本应用场景中,要避免覆盖和丢失联机完成的工作,应再次从云中下载应用并进行解压缩,提交文件更改,解决冲突,然后重新打包并上传新应用。 请确保源代码管理包含应用的主副本。

将发生冲突,因为多人正在同时编辑。 例如,如果两个人在不同的屏幕上选择了相同的控件名称,则会产生合并冲突。 有关详细信息,请参阅 Microsoft Power Platform CLI 文档