我有一個在 VB.net 中開發的 com dll,它提供了 eBay api 的介面。作業了很多年。最近 eBay 更改了證書頒發機構并移至 TLS 1.2。排序通過,但現在從 Access 呼叫時,dll 似乎在中間事務中退出。該功能將串列從本地庫存到 eBay。第一部分將串列專案的圖片加載到 eBay。這很好用。我可以使用 Fiddler 查看呼叫和回應。然后它繼續實際列出從 Access 呼叫時似乎停止的專案。我在 Access 中得到的是“在檔案位置找不到 x.dll”。我知道呼叫將轉到 dll,因為它會上傳圖片。
我有一個在 VB.net 中開發的測驗專案來測驗 dll,并且在運行時一切正常。我可以在提琴手中看到串列呼叫和回應。從 Access 運行時,沒有串列呼叫。我可以驗證測驗專案或 Access 的呼叫端點是否相同。
我的問題是從 Access 呼叫時如何在 Visual Studio IDE 中除錯 dll。有什么想法嗎?
uj5u.com熱心網友回復:
是的,您這樣做的方式是打開 .dll 的 vs 類。
然后在專案的除錯中,設定這個:

現在,當您按 f5 時,訪問將啟動并運行。
如果此時,假設您關閉訪問(退出),那么您注意到除錯程序停止。
但是,請瀏覽 Access 中的表單和其他內容,然后到達您點擊該按鈕或其他內容的位置。
您現在發現您可以說設定斷點,甚至可以像任何其他代碼一樣單步除錯您的 .net 代碼。所以說在我的例子中(一個自定義的 sage 300 .net 介面訪問),我想從 VBA 除錯“查找客戶”例程。
好吧,在 vb.net 我有這個代碼:

因此,當任何例程 - 甚至是類實體中的例程被呼叫時,您都可以設定斷點等。
并停下來?只需退出訪問。
因此,您可以更改您的代碼,甚至按 f5。
目前尚不清楚您是如何注冊 .dll 的(或者您是否使用一些 VBA 來側載 .net - 這就是我所做的,因為必須在每臺 PC 上注冊我的 .net com 物件很痛苦。
但是,請嘗試上述方法。它應該讓您除錯您的 .dll 代碼。訣竅是讓 VS 啟動 ms-access 作為附加的除錯會話 - 這正是上面類專案中的上述設定允許您執行的操作。
請注意上面,我使用了訪問 2010 的路徑(訪問 14),因此將 access.exe 的路徑名替換為您正在使用的訪問版本。
請記住,如果有一些安裝程式或一些自定義“東西”為您注冊您的 .net .dll?
好吧,在這個程序中,如果你的 VBA 假定一個注冊的 com 物件,那么確保你啟用了這個復選框:
在為專案設定編譯時,您希望選中此選項:

注意非常小心,檢查上述選項根本不會更改代碼或任何內容 - 它只會為您自動進行 regasum,這當然會重新注冊您現有的 .dll - 這是我們想要除錯的內容。完成后,請運行您的 .dll 重新注冊,以從當前專案 bin 檔案夾中的除錯 .dll 切換回您在 PC 上“常規”使用的任何內容。
僅供參考:在大多數情況下,我發現除非您以管理員身份啟動 VS,否則整個想法都行不通。因此,請確保 VS 以管理員身份運行以使其正常作業。
我傾向于只點擊 windows 鍵,甚至右鍵單擊您的 vs 快捷方式,當然選擇以管理員身份運行。
這是經常需要的,您注意到 VS 會簡單且非常清晰地顯示您在管理員模式下運行,而我現在幾乎總是以這種方式運行 VS。
你應該看到這個:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/460163.html
