本文提供了在处理解决方案和重复二进制文件时与 v2 架构中的桌面流相关的问题的解决方法。
现象
将 Power Automate v2 架构与托管或非托管解决方案配合使用并尝试在本地或通过云运行桌面流时,可能会在日志中收到以下错误:
DesktopFlowBinaryReferenceCollisionException
原因
此问题是由于 Dataverse 分层的工作方式导致的。 假设在两个环境中有桌面流(通过解决方案导出或导入实现)。 如果在两个环境中更新相同的桌面流,然后尝试将一个解决方案导入另一个环境,该过程将遇到错误。
之所以会出现此问题,是因为将 v1 架构更新到 v2 架构时会创建新的桌面流二进制文件。 在每个环境中创建的二进制文件具有不同的 ID,导入解决方案时,Dataverse 会将它们视为两个单独的二进制文件。 由于每个类型的一个二进制文件都是预期的,因此从Power Automate 桌面版的角度来看,这将导致重复二进制文件。
解决方法
由于此行为与平台的工作方式相关,因此没有特定版本的Power Automate 桌面版将更改该行为。 但是,在应用以下解决方法之一后,此问题不会保留。
托管解决方案的解决方法
- 删除目标环境中的解决方案。
- 将解决方案重新导入到环境中作为托管解决方案。
非托管解决方案的解决方法
- 删除目标环境中的桌面流。
- 将解决方案重新导入到环境中作为非托管解决方案。
有关详细信息,请参阅 Power Automate v2 架构的应用程序生命周期管理(ALM)。
详细信息
下表描述了处理 v1 和 v2 架构桌面流和解决方案时可能的情况。 它还提供有关使用托管和非托管解决方案的 v2 架构桌面流行为的详细信息。
注意
无法在Power Automate 桌面版中编辑托管解决方案中的 V2 架构桌面流。 与允许编辑的 v1 架构相比,这是一种行为更改。
源桌面流 | 源解决方案 | 目标环境 | 目标解决方案 | 目标桌面 fow | 导入后的状态 | 注释 | 解决方法 |
---|---|---|---|---|---|---|---|
V2 架构 | 托管 | 已启用 V2 架构 | 托管 | v2 | 良好 | ||
V2 架构 | 托管 | 已启用 V2 架构 | 托管 | v1 | 良好 | 将 v2 架构解决方案导入已启用架构 v1 的环境中将不起作用。 | |
V2 架构 | 托管 | 已启用 V2 架构 | 托管 | v1 架构通过重新保存桌面流更新到环境中的 v2。 | 错误 | 将托管桌面流从 v1 架构更新到 v2 会创建非托管层。 导入解决方案时,会发生重复的二进制文件,并阻止桌面流运行。 建议不要更新或更改托管桌面流。 | 删除目标环境中的托管解决方案,然后将托管解决方案重新导入到环境中。 有关详细信息,请参阅 使用解决方案管理 v1 和 v2 架构迁移。 |
V2 架构 | 非托管 | 已启用 V2 架构 | 非托管 | v2 | 良好 | ||
V2 架构 | 非托管 | 已启用 V2 架构 | 非托管 | v1 | 良好 | 将 v2 架构解决方案导入已启用架构 v1 的环境中将不起作用。 | |
V2 架构 | 非托管 | 已启用 V2 架构 | 非托管 | v1 架构通过重新保存桌面流更新到环境中的 v2。 | 错误 | 更新非托管流会创建新的二进制文件。 从另一个环境导入桌面流时,二进制文件不会具有相同 ID,并且将重复。 | 从目标环境删除桌面流(删除非托管解决方案是不够的,因为它不会删除桌面流),然后将非托管解决方案重新导入到环境中。 有关详细信息,请参阅 使用解决方案管理 v1 和 v2 架构迁移。 |