ネイティブ (C++) dll から関数を呼び出す C# ラッパー コードがあります。現在、C# dll への参照を追加し、'Copy Local' オプションを true に設定できます。ただし、依存関係であるネイティブ dll は参照として追加できないため、「ローカルにコピー」オプションはありません。
私は次のアプローチを試しました
ビルド後のイベントを使用して、ネイティブ dll を Libs フォルダーから
$(TargetFolder)
copy "$(ProjectDir)Libs\NQuantLibc.dll" "$(TargetDir)NQuantLibc.dll"
プロジェクトに既存のアイテムとしてネイティブ dll を含めました (追加 -> 既存のアイテム -> dll を含める)。このオプションにより、「ローカルにコピー」オプションを使用できます。このアプローチの欠点は、dll が常にプロジェクト アイテムとして表示されることです。
また、Libsフォルダーを表示できる「すべてのファイルを表示」を試しました。次に、NQuantLibc.dll ファイルをプロジェクトに含めて、「ローカルにコピー」オプションを設定できるようにしました。しかし、これは私に予想外の結果をもたらしました。bin フォルダー内に dll を含む Libs サブフォルダーが作成されます (例: bin/debug/Libs/NQuantLibc.dll
)。C# dll はネイティブ dll が存在しないため、ネイティブ dll を適切に呼び出すことができなかったため、理想的ではありません。
上記のオプションは両方とも機能します。依存関係が常に解決されるように、ネイティブ dll を bin フォルダーにコピーするより良い方法はありますか? あるいは、このタイプのシナリオに対する別のアプローチはありますか?