繁体   English   中英

在Dynamics AX中进行调试

[英]Debugging in Dynamics AX

我在学习的过程中仍然面临着一些麻烦,所以一旦我和大孩子一起玩,我想它会变得更糟:动态警告不像VS那样精确和有用,没有鼠标悬停提示,例外告诉我我错在哪里。 我已经习惯了Visual Studio,它是智能感知和所有工具(与Visual Studio相比,动态是相当新的)

除了解决简单的代码问题之外,我还想学习如何解决我可能在我编写的代码或者我在Visual Studio中3分钟内解决的其他任何代码中的upcomming问题,以及如何在没有所有Visual Studio工具的动态ax。

Dynamics AX中的代码编辑器具有一些智能感知,键入表或类变量后跟的名称。 或::将为您提供该项目可用的字段或方法列表。 键入(要启动方法调用后,弹出一个工具提示,其中包含该方法可用的参数。启动新行时,可以右键单击列表,列表类,列表类型等。这些命令中的大多数也是可以通过快捷键获得 。请注意,只有当方法中的所有代码到光标位置的语法正确时,智能感知才有效。

确保在开发环境中更新了交叉引用(工具/开发工具/交叉引用/定期/更新)。 使用更新的交叉引用,您可以右键单击AOT中的任何表,字段,类,方法,扩展数据类型或枚举,然后选择加载项/交叉引用/使用,以查看该项在何处使用系统。

您还可以使用工具/开发工具/代码浏览器查看应用程序的源代码,将所有类型,变量和方法转换为超链接,以便您可以单击以右键查看该项目的定义。

另一个有用的工具是应用程序层次结构树,可在工具/开发工具下使用,也可在右键单击加载项菜单中使用。 这将显示类层次结构,因此您可以轻松地看到,例如,SalesFormLetter派生自FormLetter,它派生自RunBaseBatch。

在编辑器中,您可以突出显示文本,然后右键单击“查找属性/方法”或“查找定义”。

如果您尝试跟踪系统中生成特定信息消息的位置,则有两种策略可供使用:

  1. 在Info.add()方法的第一行设置断点。 然后,当您运行生成消息的代码时,一旦生成infolog,您将立即进入调试器。 然后,您可以查看调试器中的堆栈跟踪,以查看生成消息的代码的位置。

  2. 运行工具/开发工具/标签/标签编辑器并搜索消息文本。 选择消息的标签ID,然后单击“用于”以查看系统中消息的使用位置。

还有http://www.axassist.com/ ,它扩展了intellisense和许多其他扩展

这些家伙已经说过的话非常有趣乐于助人

我想在现实生活中加入AX,你可能正在处理多个上下文。 例如,客户端中运行的代码,服务器中运行的代码,p代码和IL中运行的代码,COM集成,企业门户等。

我的观点是,如果你想通过调试来解决问题,你必须首先了解你想要调试的代码在哪里运行。

知道这很重要,因为您可能必须允许调试或在多个位置授予权限。

例子:

  • Windows AD调试用户(自己添加)
  • 允许在客户端上调试
  • 允许它在服务器上
  • 如果要使用MorphX,请禁用IL,否则在VS中附加进程。
  • 允许World Wide Web Publishing服务与桌面进行EP交互。

最后一件事,你现在开始使用ax,也许你需要使用AX7 (Dynamics 365 for Operations)。 此版本的系统仅适用于visual studio 它仍然是x ++,但你有很多VS为你提供的东西。

看看EditorScripts类,在AX编辑器上,您可以通过右键单击并选择“脚本”来使用它。 这是一种可以由你自己制作的智能感知,例如:每当我输入“mycom”并按“tab”时,这里就是我的内联评论

public void template_flow_mycom(Editor editor)
    {
        xppSource   xppSource   = new xppSource(editor.columnNo());
        int         currentline = editor.currentLineNo();
        int         currentcol = editor.columnNo();

        Source      template = "//Partner comment "+date2str(today(),123,2,1,3,1,4, DateFlags::FormatAll )+" at "+time2str(timenow(), 1, 1)+" by MAX - Begin\n";
        template+=strRep(" ", currentcol)+ "\n";
        template+=strRep(" ", currentcol)+ "//Partner comment "+date2str(today(),123,2,1,3,1,4, DateFlags::FormatAll )+" at "+time2str(timenow(), 1, 1)+" by MAX - End\n";

        editor.insertLines(template);
        //move cursor to the empty line between the comments
        editor.gotoLine(currentline+2);
        editor.gotoCol(currentcol+4);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM