1

VS2010 と VB.net (相互運用) で Windows com オブジェクトを作成しています。

この com オブジェクトは、Word、Excel、またはこの場合は Access などの非マネージ コード アプリケーションで動作できる必要があります。

com オブジェクトの作成と regasm の使用などは正常に機能します。問題ない。

ただし、接続文字列または app.config ファイルから他の何かを必要とする com オブジェクトを作成すると、失敗します。この場合、たまたま Web サービスであり、一般的な「エンドポイント」または app.config ファイルが見つからないというエラーが発生します。(単なる接続文字列の場合は、この値を読み込むだけで済みますが、Web サービスの定義のために構成ファイルが非常に煩雑になります)。

.dll と app.config を、Excel などのオフィス プログラムと同じディレクトリに配置してから、構成ファイルの名前を Excel.exe.config に変更すると機能するはずだと示唆する人もいます。

これは私にとってはうまくいかないようです。

メインアプリケーションファイルではなく.dllの構成ファイルをロードして使用することを知っているcomオブジェクトであるvb.netクラス(.dll)を持つ手段はありますか?

この場合、Word や Excel などの管理されていないアプリケーションを起動し、クラス オブジェクトを使用しようとしているため、メイン アプリケーションの構成ファイルがないことに注意してください。

vb.net では明らかに、構成ファイルを .dll からメイン アプリケーションの構成にコピーできます。前述のように、管理された「メイン」ファイルがありません。

では、オブジェクトのインスタンスが非マネージ コードで作成されたときに、class.dll ファイルに class.dll.config ファイルをロードさせるにはどうすればよいでしょうか。

4

1 に答える 1

3

クラス ライブラリでアプリケーション設定を使用することは、一般に不適切な方法です。.NET は EXE プロジェクトに対してのみサポートします。[ComVisible] DLL の場合は、チャートから外れています。どの EXE がコードを使用するかを完全に制御することはできません。

動作しないわけではありません。foo.exe クライアント ディレクトリに foo.exe.config のコピーを配置すると、問題なく動作します。この解決策を探したのがあなただけではない場合、問題は始まります。インストーラーが互いの .config ファイルを上書きし始めると、アドインが診断できないほど失敗すると、顧客は大きな損失を被ります。

この問題の解決策は 1 つだけです。設定を使用しないことです。クラス ライブラリに構成を提供する方法は他にもたくさんあります。既知の場所にある .xml ファイルも問題なく機能します。

于 2013-07-09T10:02:06.297 に答える