Axapta 从AX 2009批量导出表单

Axapta 从AX 2009批量导出表单,axapta,x++,dynamics-ax-2009,aot,Axapta,X++,Dynamics Ax 2009,Aot,我目前正在开发一个系统,该系统将把我的AX 2009 AOT中的所有节点导出到单个XPO文件中,以便跟踪中央版本控制存储库中的更改。我很幸运,但由于某些原因,我根本无法导出表单或数据集节点 这是我当前的代码集: private void export(str parentNode) { TreeNode node, parent; str folderName; Set permissi

我目前正在开发一个系统,该系统将把我的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”)
导出(@“\Data set”)我收到一条“无法解析节点”消息,这意味着
TreeNode::findNode()
没有正确解析。在任何其他节点(如类)上运行它不会出现此问题。这也只有在批量运行时才会发生——使用客户端运行它(删除
CodeAccessPermission
parts)将按预期导出所有节点


是否存在禁止从批处理中访问表单和数据集的内容?如果是这样,我可以做些什么来访问这些节点?

据我所知,这是服务器/客户端问题/错误。简单的解决方案是在类上创建此方法:

client static TreeNode clientTreeNode(str _path)
{
    return TreeNode::findNode(_path);
}
然后在代码中的
parent=TreeNode::findNode(parentNode)下面行,输入:

parent=parent?父节点:YourClassHere::clientTreeNode(父节点)


这应该能解决你的问题。如果您必须知道的话,您将需要进行一些挖掘,以找出为什么它在服务器层不起作用。

您不使用vss或内置源代码管理的任何原因?我们使用的是内置的MorpX VC,这是用来补充它的。他们的VC系统还有很多需要改进的地方(比如能够查看在任何一天更新或未更新的内容,代码的异地备份等),我们觉得这个解决方案有助于弥补这些差距。听起来不错-你为什么不使用vss?当时,MorpX是我们团队中最容易实现和采用的系统,当时我们认为这些好处是可以接受的。现在切换VC系统会引起很大的头痛,所以我们选择了扩充当前的解决方案,而不是重做所有事情。总有一天我们可能会实现一个不同的系统,但目前我们还没有准备好承担这一成本。这似乎解决了眼前的问题,但是当它被执行时,我仍然会在所有表单和数据集XPO上得到一个“文件被写保护或正在使用”。单步执行,它发生在
[treenode].treeNodeExport(文件名)
行上。我确实设置了适当的FileIOPermissions,因为其他一切都可以正常导出。该文件根本不存在。想法?我想我需要更多的信息。这可能是服务器文件路径和客户端文件路径之间的差异,也可能是
treenode
未正确重新初始化。问题似乎出在我们尝试使用的UNC路径上-客户端似乎不喜欢根路径格式“\\server.domain.com\c$\src\AXSource”。不过,在网络上共享文件夹并更改根修补程序“\\server.domain.com\AXSource”似乎可以正常工作。感谢您的帮助!