0

既存のアプリケーションのフォルダーに展開されている COM 可視 dll "COMInterface.dll" があります。この dll の機能を検証するテスト ハーネスを作成しました。

ただし、従来の asp を使用してこの dll のメソッドの 1 つを呼び出そうとすると、次のようなメッセージが表示されます。

MyCompany.MyProject.COMInterface (0x80070002) ファイルまたはアセンブリ 'MyCompany.Framework, Version=2.6.4202.14897, >Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

私の "COMInterface.dll" は、私の会社の標準フレームワーク、ログ クラスなど、他の多くの dll を参照しています。"Framework" は、これらの dll の 1 つです。

ASP ページはこれらの dll をどこで探しますか? ASPページがIIS Webサイト内にあるのに対し、プログラムフォルダーから実行されていたため、ハーネスが機能したと推測しています。

ここで GAC 登録を使用する必要がありますか? そこに展開する必要があるDLLがかなりあるので、そうではないことを望んでおり、ユーザーのマシンのコアインストールに影響を与えることなくアプリケーションを拡張したいと考えています。

ご質問やご提案をお寄せいただきありがとうございます。

[編集] オブジェクトは問題なく作成できることを指摘しておきます。問題を引き起こしているのは、参照されている dll の場所です。

4

2 に答える 2

1

Regasmdll の登録に使用する場合は、/Codebaseスイッチを使用して dll が確実に見つかるようにする必要があります。

于 2012-04-19T15:56:54.057 に答える
1

一般的な回答として、Fusion Log Viewer を使用して、アセンブリ バインダーによって検索されたパスを特定できます。

このツールの詳細については、 http://msdn.microsoft.com/en-us/library/e74a18c4.aspxを参照してください。

Fusion Log Viewer には、バインダーによってプローブされたすべてのパスが一覧表示されます。アセンブリをこれらのパスのいずれかに配置すると、それが見つかります。これらのパスのいずれかがシナリオに適しているかどうかはわかりません。

于 2012-04-19T13:32:50.597 に答える