8

私はこの問題に数時間悩まされています。誰かがこれと同様の問題を抱えていることを願っています。

VS2010 を使用してプロトタイプの .Net(C#) dll を開発しました。この dll を C# アプリケーションと VB6 アプリケーションの両方で呼び出せるようにしたいと考えています。

私の質問は:

.Net dll を呼び出している VB6 アプリケーションをデバッグすることは可能ですか? 「 Automation Error The system cannot find the file specified」というエラー メッセージが表示されます。

エラー メッセージは、私の VB6 アプリが .Net dll を見つけるのに何か不足していることを示しています。

VB6 アプリケーションがコンパイルされ、.exe が作成されている場合、VB6 は .exe を使用するときに .Net dll 機能を正常に呼び出すことを認識しています。

ただし、VB6 アプリケーションを介してデバッグできることが重要です。残念ながら、デバッグでは、.Net DLL のクラス オブジェクトをインスタンス化するコード行をステップ オーバーすることはできません。私はこれを行うことができないようです。

注: フォーラムと MSDN のドキュメントを調べたところ、.NET で VB6 dll を呼び出すための解決策がほとんど見つかりました。残念ながら、これは私たちがしなければならないこととは正反対です。

注: コンパイル済みの .Net(C#) アセンブリを既に登録し、VB6 プロジェクトで参照しています。

しかし、これらの 2 つのページを見つけました。これは必要なもののように見えましたが、VS2005 を使用して生成された .NET(c#) dll を呼び出すためのソリューションです。VS2010 を使用して .NET(C#) dll が生成された場合、これは機能しないようです。

サイト 1 サイト2

誰かが何か提案をしてくれたり、どこかで私がそれを手に入れることができるように教えてくれたりしたら、それは素晴らしいことです.

ありがとう

解決 策 @HansPassant のおかげで、解決策が見つかりました。C# .NET アセンブリを含む VB6 プロジェクトをデバッグするには、「regasm」と「gacutil」の両方を使用して .NET dll を登録し、デバッグを開始する前に必ず VB6 アプリケーションを閉じてから再度開く必要があります。

4

3 に答える 3

12

これは問題ではありません。VB6は、C#コード用のマネージドデバッガーを含め、他のデバッガーの邪魔にならない独自のデバッガーを使用します。

C#クラスライブラリプロジェクトから開始し、開始プロジェクトとして選択されていることを確認します。[プロジェクト+プロパティ]、[デバッグ]タブ。「外部プログラムの開始」オプションを選択し、VB6IDEへのパスを入力します。通常、c:\ program files \ microsoft visual studio \ vb98\vb6.exeです。デバッグするメソッドにブレークポイントを設定します。

F5キーを押すと、VB6ideが実行を開始します。vb6プロジェクトをロードまたは作成します。前の手順で.vbpプロジェクトへのパスを追加して、プロジェクトが自動的に読み込まれるようにする方法に注意してください。

通常どおり、vb6プロジェクトのデバッグを開始します。[ComVisible] C#クラスの使用を開始するとすぐに、C#アセンブリが読み込まれます。また、vb6コードがメソッドを呼び出すと、ブレークポイントがヒットします。必要に応じて前後に切り替えます。vb6からC#コードへのシングルステップはできないことに注意してください。デバッガーを停止するには、ブレークポイントを設定する必要があります。

于 2013-03-12T14:10:28.777 に答える
3

ああ、デバッグ可能な方法で VB6 から .NET を使用することの素晴らしさ。

  • VB6 プロジェクトのコンパイル オプション ([プロジェクトの作成] ダイアログ ウィンドウの [オプション] ボタンを使用してアクセス) で、 [ネイティブ コードにコンパイル] 、 [最適化なし] 、および[シンボリック デバッグ情報を作成]オプションを選択します。次に、VB6 プロジェクトをコンパイルします。これらのオプションにより、適切な VB6 バイナリからソースへのマッピングが可能になります。
  • ソリューションの [構成プロパティ...デバッグ] プロパティ ページに移動し、開始アクションを変更して VB6 実行可能ファイルを起動します。
  • VS ソリューション エクスプローラーで、[ファイル...既存の項目を追加] に移動し、デバッグする VB6 ソース コードを含むフォルダーに移動します。デバッグする VB6 ソース コード ファイルをダブルクリックすると、VS でソース ウィンドウが開き、VB6 ソース コードにブレークポイントを設定できます。
  • .NET ライブラリにパブリックの既定のコンストラクターがあることを確認してください。これは不可欠です。
  • 必要な C# ブレークポイントも設定します。.NET コードに踏み込まないでください。これは機能しません。
  • VS でデバッグを開始すると、VB6 と C# のブレークポイントが正常にヒットするはずです。
于 2013-03-12T14:14:45.353 に答える
1

1 つのアプローチは、それぞれを個別にデバッグすることです。

  • VB6 コードのデバッグは、C# DLL をコンパイルし、VB6 プロジェクトへの参照として追加した後、IDE で実行できます。

  • Visual Studio で VB6 ホストを使用して DLL をデバッグするには、VB6 プロジェクトをコンパイルし、それをプロジェクト プロパティで実行する実行可能ファイルとして使用します。

場合によっては、両方を同時にデバッグする環境をセットアップするよりも、これの方が簡単/迅速です。

このアプローチでは、少なくとも各作業のフレームワークを事前に用意しておく必要があります。

于 2013-03-12T13:34:31.723 に答える