12

2 つの DLL で定義されているサードパーティ API を使用しています。これらの DLL をプロジェクトに含め、それらへの参照を設定しました。ここまでは順調ですね。

ただし、これらの DLL には、実行時に見つからない依存 DLL が少なくとも 1 つあります。欠落している DLL をプロジェクトにコピーし、「出力にコピー」フラグを設定しましたが、成功しませんでした。

依存する DLL を見つける場所をプロジェクトに伝えるには、ここで何をすればよいですか?

不明な DLL への参照を追加しようとしましたが、.Net コンポーネントとして認識されませんでした必死になって、出力フォルダーに直接追加しましたが、成功しませんでした。

最後に、API を PC にインストールしたところ、すべて機能しました。インストールによって PATH 変数が設定され、DLL がインストール フォルダに見つかります。しかし、プロジェクトにその内部フォルダーの 1 つを調べるように指示するにはどうすればよいでしょうか?

4

3 に答える 3

2

サードパーティのライブラリと、それが独自の依存関係をどのように使用するかをよりよく理解する必要があるようです。APIのインストールで問題が解決したが、ファイルを手動でコピーしても問題が解決しない場合は、何かが足りません。不足しているファイル、または必要な環境変数またはレジストリエントリがあります。これで本当に役立つ2つのことは、dependsツール(C ++インストールの一部)とprocmonです。これは、実行時に使用されるすべてのレジストリキーとファイルを通知します。

運が良ければ、それはあなたが見逃しているファイルです。それだけの場合は、プロジェクトの「ビルドイベント」セクションを使用して、ビルドが成功したときに必要なファイルを適切な場所にコピーできます。そうでない場合は、APIのインストールを要求するか、独自のインストールプロジェクトをロールすることにより、これを別の方法で解決する必要があります。

于 2008-10-27T13:53:52.887 に答える
0

どのように展開していますか?フラットファイルだけ?その場合、ファイルがプロジェクトの出力ディレクトリにある限り、機能するはずです。そうですか?

別の展開を使用している場合は、そのエンジンにそれを含めるように指示する必要があります。これは、msi/ClickOnce/etc ごとに異なります。

于 2008-10-27T13:36:15.777 に答える
0

プロジェクトへの参照として下流の依存関係をゆっくりと追加することができます。これは面倒で、やや壊れやすいです

または、Microsoft の「Depends.exe」などのツールを使用して、最上位アセンブリを検査し、依存関係への参照リストを取得することもできます。

于 2008-10-27T13:36:28.493 に答える