簡體   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