5

我在学习时仍然面临一些麻烦,所以我想一旦我和大孩子一起玩,情况会变得更糟:动态警告不如 VS 精确和信息丰富,没有鼠标悬停提示,并且有例外告诉我我哪里做错了。我只是太习惯于 Visual Studio,它是智能感知和所有工具(与 Visual Studio 相比,动态是相当新的)

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

4

4 回答 4

8

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

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

您还可以使用工具/开发工具/代码资源管理器查看应用程序的源代码,其中所有类型、变量和方法都转换为超链接,因此您可以单击以直接转到该项目的定义。

另一个有用的工具是应用程序层次结构树,可以在工具/开发工具下或右键单击加载项菜单上找到。这将向您显示类层次结构,因此您可以很容易地看到,例如,SalesFormLetter 派生自 FormLetter,而 FormLetter 派生自 RunBaseBatch。

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

如果您试图追踪在系统中生成特定信息日志消息的位置,可以使用两种策略:

  1. 在方法 Info.add() 的第一行设置断点。然后,当您运行生成消息的代码时,您将在生成信息日志后立即弹出调试器。然后,您可以查看调试器中的堆栈跟踪,以查看生成消息的代码在哪里。

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

于 2010-01-04T22:35:12.613 回答
4

还有http://www.axassist.com/扩展了智能感知和许多其他扩展

于 2010-01-05T07:36:42.913 回答
2

这些家伙已经说过的话非常有趣有帮助

我想补充一点,在现实生活中的 AX 中,您可能正在使用多种上下文。例如,在客户端运行的代码、在服务器中运行的代码、在 p-code 和 IL、COM 集成、企业门户等中运行的代码。

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

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

例子:

  • Windows AD调试用户(添加自己)
  • 允许在客户端调试
  • 允许在服务器上
  • 如果要使用 MorphX,请禁用 IL,否则在 VS 中附加该进程。
  • 允许万维网发布服务与 EP 桌面交互。

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

于 2016-10-27T15:16:48.890 回答
0

查看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);
    }
于 2016-07-20T02:17:10.040 回答