我目前正在开发一个系统,该系统会将我的 AX 2009 AOT 中的所有节点导出到单个 XPO 文件,以跟踪中央版本控制存储库中的更改。我运气不错,但由于某种原因,我根本无法导出表单或数据集节点。
这是我当前的代码集:
private void export(str parentNode)
{
TreeNode node, parent;
str folderName;
Set permissions = new Set(Types::Class);
;
folderName = exportBaseDir + parentNode;
permissions.add(new FileIoPermission(folderName, "r"));
permissions.add(new InteropPermission(InteropKind::ClrInterop));
CodeAccessPermission::assertMultiple(permissions);
//Create Filesystem Folder if needed
if (!WinApiServer::pathExists(folderName))
System.IO.Directory::CreateDirectory(folderName);
CodeAccessPermission::revertAssert();
parent = TreeNode::findNode(parentNode);
if (parent)
node = parent.AOTfirstChild();
else
warning(strfmt("Could not parse node: %1", parentNode));
while (node)
{
this.exportNode(node);
node = node.AOTnextSibling();
}
}
当我打电话export(@"\Forms");
或export(@"\Data Sets");
收到“无法解析节点”消息时,这意味着TreeNode::findNode()
没有正确解析。在任何其他节点(例如类)上运行它都没有这个问题。这也只有在批处理运行时才会发生 - 使用客户端运行它(CodeAccessPermission
删除部分)将按预期导出所有节点。
有什么东西会禁止从批处理中访问表单和数据集吗?如果是这样,我该怎么做才能访问这些节点?