現在、.NET 2.0フレームワークを使用してC#で記述されたCOM相互運用機能ライブラリを使用するVB6のアプリケーションで作業しています。COM Interopを使用するVB6アプリケーションはIDEで正常に動作しますが、EXEクラッシュは発生します
私は、regasm.exeを使用して、/ codebaseスイッチを使用して.NET DLLからtlbファイルを登録しました。私は正常にビルドし、問題なしでVB6 IDEでアプリケーションを実行することができました。 .NETコードは設定ファイルを使用しているので、VB6ディレクトリに追加して、設定からうまく読み込みます。
しかし、プロジェクトからEXEファイルをコンパイルして、IDEが実行されているのと同じマシンで実行しました。 VB6.EXEでデバッグしたのと同じように、EXEと設定ファイルを結合しましたが、アプリケーションが.NETクラスのメソッドの最初の呼び出しを実行すると、実行時エラーがスローされ、オートメーションエラー "と表示されます。
私の宣言では、.NETクラスから次のオブジェクトをインスタンス化していますが、これは正常に動作するようです。
Private objSession As New Session
Private curFolder As Folder
Private colFolderTemplates As New FolderTemplateCollection
Private objLicense As New License
最初の行が実行されたときしかし、オートメーションエラーが実行時にアップしています:
Call objSession.Configuration.Configure(connectionString)
私がリリースEXEと同じディレクトリに.NET DLLを追加し、再登録しようとしましたtlbファイルを作成したが、それは役に立たなかった。私がチェックできるものについての提案はありますか?
ワン型はComVisibleとして認定されていますが、私のアセンブリはありません。アセンブリをComVisibleとしてマークし、それらにGUIDを割り当てると、状況を助けるか、または傷つけるでしょうか? –
GUIDを追加すると何も傷つくことはありません。 – AngryHacker
問題は実際には.NETコードで使用される設定ファイルに根差しているようですが、同じ設定を使用してIDEで実行されている理由はまだ分かりません。しかし、私は将来の変更のために上記のあなたの点を指摘しました。ありがとう! –