3

こんにちは、いくつかの小さなプロジェクトで構成されるプロジェクト ソリューションがあります。これらのプロジェクトは、次のように他のプロジェクトに依存しています。

(1) デバイス制御機能を備えたネイティブ アンマネージド C++ dll

使用者は…</p>

(2) ネイティブ関数を .Net にラップする C# プロジェクト

使用者は…</p>

(3) フレームワークによって定義されたより一般的な抽象化レイヤーへの特殊なデバイスへのアダプターのラッピング

使用者は…</p>

(4) 簡単な実装例では、抽象化フレームワークを介してこのネイティブ デバイス インターフェイスを使用しようとします。

ここでの問題: ネイティブ dll (1) が .Net ラッパー プロジェクト (2) に「既存のアイテム」として追加され、「ビルド イベント = コンテンツ」および「出力へのコピー… = 常に」が「Hans Passant」として設定されます。この問題解決。ネイティブ dll は、DllImportAttribute を介してこのラッパーで使用されます。そして、これはこのプロジェクトではうまくいきます。dll は出力ディレクトリにコピーされ、ラッパーによって検出されます。

ラッパー (2) は、アダプター ラッパー プロジェクト (3) からの「参照」として使用されます。また、ネイティブ dll (1) が出力ディレクトリにコピーされ、.Net ラッパー (2) によって検出および使用されます。しかし…</p>

.. アダプター ラッパー プロジェクト (3) を単純なサンプル プロジェクト (4) に「参照」として追加すると、ネイティブ dll (1) はこのサンプル プロジェクト (4) の出力ディレクトリにコピーされません。したがって、dll は .Net ラッパー (2) によって検出されず、System.DllNotFoundException が発生します。

私の質問は次のとおりです。アダプタ ラッパー プロジェクト (3) を別のプロジェクトに追加すると、必要なすべての dll が出力ディレクトリ (ネイティブ dll (1) を含む) にあるということです。参照しているプロジェクトの出力ディレクトリにコピーされましたか? そして、これは、Marc Gravellが言っているように、実装例にリソースとしてネイティブ dll を追加しません。

どうもありがとう、J

4

1 に答える 1

1

たぶん私は何かが欠けているかもしれませんが、各プロジェクトの出力パスを共通の「bin」フォルダーにビルドするように変更するのはどうですか?

于 2014-04-11T18:24:28.977 に答える