0

私は .NET 開発者です。.NET で参照がどのように機能するかをよく理解しています。つまり、AssemblyB.classB.MethodB で AssemblyA.ClassA.MethodA を使用する場合は、Assembly A の参照を Assembly B に追加します。

VB6 アプリを見ていますが、開くとエラーが発生します。つまり、読み込み中にエラーが発生します。frmMain.log を参照してください。frmMain.log を開くと、「2142: コントロール CommonDialog1 のクラス MSComDlg.CommonDialog は、読み込まれたコントロール クラスではありませんでした。」と表示されます。WinMerge を使用して、問題のあるプロジェクトのソース コードを以前のバージョンのプロジェクト (問題のない) と比較しました。唯一の違いは、障害のあるプロジェクトの client.vdp ファイルに次の行が含まれていることです。

Reference=*\G{08DBEFD7-6A19-4DCE-A533-5BDBB93683C8}#1.2#0#..\..\..\..\..\Windows\SysWOW64\Comdlg32.oca#Microsoft Common Dialog Control 6.0 (SP3)

この行を削除すると、問題が解決するようです。これで問題が解決するのはなぜですか?


Winmerge を使用して、プロジェクトの昨日のリビジョン (問題がない) と今日のプロジェクトのリビジョン (問題がある) を比較しました。唯一の違いは、VBP ファイル内の元の投稿の参照です。

4

1 に答える 1

1

誰かがこのコントロールの開発バージョンを別のマシンにインストールし、それへの参照を設定したと思います。マシンでプロジェクトを開こうとすると、参照が失敗します。または、コントロールがアンインストールされました。プロジェクトは参照を使用していなかったようで、参照なしでもコンパイルされるため、安全に削除できるようです。

ただし、vb6 がこの状況で問題のフォームからライセンスのないコントロールを実際に削除するのを見てきました。そのため、フォームに以前存在していたコンポーネントが欠落しているため、コンパイルできるようになった可能性があります。.frm ファイルと .frx ファイルの両方で、frmMain が変更されていないことを確認しましたか?

于 2013-09-05T20:47:41.983 に答える