11

reg-free シナリオで VB6 クライアントから VB.NET DLL (.NET FX 4.0) にアクセスしようとしています。

http://msdn.microsoft.com/en-us/library/ms973915.aspxの例に従おうとしましたが、成功しませんでした。ソースをダウンロード (記事内のリンク) してコンパイルしましたが、成功しませんでした (エラー メッセージ: 実行時エラー '-2146234341 (8013101b)': 自動化エラー")。登録済みの VB.NET DLL を使用して VB6 IDE から実行すると動作します。

.NET DLL が (VS2010 の「COM クラス」テンプレートを使用して) COM クラスとして作成され、参照される DLL のマニフェストが埋め込まれているかどうかにかかわらず、他の例を試してみましたが、何もうまくいきませんでした。

reg-free シナリオの VB6 クライアントで使用される VB.NET DLL (.NET FX v4) のマニフェストの例を含む簡単なソース コードを誰かが提供できますか?

よろしくお願いします。

4

1 に答える 1

21

実行時エラー'-2146234341(8013101b)':自動化エラー

あなたの問題はマニフェストとは何の関係もありません。最初にこれを修正する必要があります。エラーコードはCOR_E_NEWER_RUNTIMEです。つまり、[ComVisible]クラスはCLRバージョン4に依存しているため、ロードできません。また、別の[ComVisible]クラスが最初に要求したため、プログラムはすでにCLR、バージョン2をロードしている可能性があります。そしてそれはバージョン2を求めました。

誰かがバージョン2を要求した場合でも、CLRバージョン4を強制的にロードするapp.exe.configファイルが必要になります。次のようになります。

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

vb6 exeと同じ名前(「foo.exe」と一致する「foo.exe.config」など)を付けて、.exeと同じディレクトリに配置します。VB6 IDEを使用してこのライブラリを使用するvb6コードをデバッグする場合は、c:\ program files \ microsoft visual studio\vb98にあるvb6.exe.configも必要です。

于 2012-07-13T15:12:25.190 に答える