簡體   English   中英

調試調用.Net(C#)dll的VB6項目

[英]Debugging VB6 project that calls a .Net(C#) dll

我已經把這個問題留了幾個小時了。 我希望有人遇到類似的問題。

我們使用VS2010開發了一個原型.Net(C#)dll,並且希望能夠在C#應用程序和VB6應用程序中調用這個dll。

我的問題是:

是否可以調試調用.Net dll的VB6應用程序? 我收到錯誤消息“ 自動化錯誤系統找不到指定的文件

錯誤消息表明我的VB6應用程序找不到.Net dll。

我知道如果VB6應用程序已經編譯,並且已經創建了.exe,VB6將在使用.exe時成功調用.Net dll功能

但是,重要的是我們可以通過VB6應用程序進行調試。 不幸的是,調試不允許您跨越實例化.Net DLL的類對象的代碼行。 我似乎無法做到這一點。

注意:我查看了論壇和MSDN文檔,我主要找到在.NET中調用VB6 DLL的解決方案; 不幸的是,這與我們需要做的事情相反。

注意:我已經注冊了已編譯的.Net(C#)程序集,並在VB6項目中引用了它。

然而,我發現這兩個頁面似乎是我們需要的,但它是一個用於調用使用VS2005生成的.NET(c#)dll的解決方案。 當使用VS2010生成.NET(C#)dll時,這似乎不起作用。

site1 site2

如果有人可以提出任何建議或指導我某個地方,我可以得到一個,這將是偉大的。

謝謝

解決方案感謝@HansPassant,我找到了解決方案。 要調試包含C#.NET程序集的VB6項目,需要通過“ regasm ”和“ gacutil ”注冊.NET dll,然后確保在開始調試之前關閉並重新打開VB6應用程序。

這不是問題,VB6使用自己的調試器,不會妨礙任何其他調試器,包括C#代碼的托管調試器。

從C#類庫項目開始,確保將其選為啟動項目。 Project + Properties,Debug選項卡。 選擇“啟動外部程序”選項,然后輸入VB6 IDE的路徑。 通常是c:\\ program files \\ microsoft visual studio \\ vb98 \\ vb6.exe。 在要調試的方法上設置斷點。

按F5鍵,VB6 ide將開始運行。 加載或創建您的vb6項目。 請注意如何在上一步中添加.vbp項目的路徑,以便它自動加載項目。

像往常一樣開始調試vb6項目。 一旦它開始使用你的[ComVisible] C#類,你的C#程序集就會被加載。 當您的vb6代碼調用該方法時,斷點將會出現。 根據需要來回切換。 請注意,您不能單步從vb6到C#代碼,您必須設置斷點以使調試器停止。

啊,以可調試的方式從VB6使用.NET的奇跡。

  • 在VB6項目編譯選項中(使用Make Project對話框窗口中的Options按鈕到達),選擇Compile to Native CodeNo OptimizationCreate Symbolic Debug Info選項。 然后編譯你的VB6項目。 這些選項允許適當的VB6二進制到源映射。
  • 轉到解決方案的Configuration Properties ... Debugging屬性頁,然后更改Start Action以啟動VB6可執行文件。
  • 在VS Solution Explorer中,轉到File ... Add Existing Item並導航到包含要調試的VB6源代碼的文件夾。 雙擊要調試的VB6源代碼文件,在VS中打開一個源窗口,允許您在VB6源代碼中設置斷點。
  • 確保您的.NET庫具有公共默認構造函數。 這很重要。
  • 現在還設置您需要的任何C#斷點。 不要踏入.NET代碼-這是行不通的。
  • 當您使用VS開始調試時,應正常命中VB6和C#斷點。

一種方法是單獨調試每個:

  • 在編譯C#DLL並將其添加為VB6項目的引用之后,可以在IDE中完成VB6代碼的調試。

  • 通過編譯VB6項目並在項目屬性中將其用作要運行的可執行文件,可以在Visual Studio中使用VB6主機調試DLL。

在某些情況下,這比設置環境以同時調試兩者更簡單/更快。

這種方法需要預先至少具有每個工作的框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM