您可能正在使用来自较新版本的 Studio 的 .xaml 文件。BuildDataTable 似乎对此很挑剔。
在一些第三方开发人员进行了一些代码更改后,我在我们的生产系统上遇到了那个神秘的崩溃。我注意到我的崩溃屏幕中 UIPath 通用对象的版本是 19.10.xx,我知道我们的生产和测试/开发系统在 v18.x 上。
我怀疑他们向我们发送了在较新版本的 Studio 中开发的代码,或者从他们的 Studio 远程复制并粘贴到我们的 Studio 中,并且它恰好可以工作(至少是粘贴)。我收到用户的投诉,称机器人无法工作,所以他们只能手动操作,直到可以修复为止。
要“修复”,请在 Studio 中编辑 .xaml。在活动中找到构建数据表并创建一个新的代码块。由于 Build 命令非常简单,只需要输出 dt 字段,这可能是最简单的选择。我用新的“BuildDataTable”活动重新调试它,它没有抛出异常。[我可能已经降级了 .xaml 文件中的 genericvalue 版本号,但我已经在 Studio 中了。]
您还可以使用“findstr”从 .xaml 文件中搜索 BuildDataTable 命令。findstr 或 egrep 命令可以显示通用值 UIPath 在创建时尝试填充到空数据表中的版本:
<ui:BuildDataTable DataTable="[DetailDT]" DisplayName="Details Data Table"
xs:element name="Change_x0020_Type_x0020_Index"
...
msdata:DataType="UiPath.Core.GenericValue, UiPath.System.Activities, Version=19.10.1.0,
UIPath 的一个更好的“功能”是它们使用一种开放格式的 .xaml 文件来存储所有代码。使用 findstr 或 egrep 确实有助于发现分布在我们大量文件夹中的隐藏问题。它们的 xaml 不像合并用 autoIt3 或 AutoHotKey 编写的代码那么容易,因为它们具有图形屏幕大小元素和嵌入其中的块编号标签,但至少所有图形代码块都没有完全锁定在某种压缩或 OLE 格式中就像在 Windows 上运行(仅?)的软件一样诱人。