6

私は3つのプロジェクトを持つVS2010ソリューションを持っています:

  1. ネイティブ (C++) DLL
  2. ネイティブ DLL を使用するマネージ (C#) DLL
  3. マネージド DLL を使用するマネージド (C#) コンソール アプリ

マネージ DLL をコンソール アプリへの参照として設定できますが、ネイティブ DLL をそのような参照として設定することはできません。

クラッシュせずに VS2010 内からコンソール アプリを実行するには、ネイティブ DLL を .exe フォルダーにコピーする必要があります。

2 つの質問があります。

  1. 手動でコピーする必要がないように、ネイティブ DLL を DLL 検索パスに追加するにはどうすればよいですか?
  2. 各構成 (デバッグ/リリース) が正しい DLL バージョンを取得するようにするにはどうすればよいですか?

より詳細な解決策- Tilak の回答による:以下は、 Tilak の回答
に基づく初心者向けの詳細です。

  1. マネージド コンソール プロジェクトにネイティブ DLL をファイルとして追加します (既存のファイルを追加...)。
  2. プロジェクトのプロパティ ペインで、[ビルド アクション] を [コンテンツ] に、[出力ディレクトリにコピー] を [新しい場合はコピー] または [常にコピー] に設定します。
  3. ソリューションまたは VS2010 を閉じます。
  4. マネージド プロジェクト.csprojファイルをテキスト エディターで開き、<ItemGroup>ネイティブ DLL 名を含むファイルを見つけます (これは、手順 1 でファイルを追加したときに作成されたものです)。そこにいくつかの小さな変更を加えます。
    1. デバッグ ビルドの場合は、デバッグDLLへのパスを<ItemGroup>使用して入力する代わりに。<ItemGroup Condition="'$(DefineConstants)' == 'DEBUG;TRACE' ">
    2. リリース ビルドのエントリを複製し、<ItemGroup>使用する代わりにリリースDLL<ItemGroup Condition="'$(DefineConstants)' != 'DEBUG;TRACE' ">へのパスを入力します。
  5. ファイルを保存し、VS2010 を再度開きます。依存関係が適切に配置されているはずです。
4

1 に答える 1

6

ビルド後のイベントでファイルをコピーすることで、

また

リソースとしてファイルを追加します。

各構成(デバッグ/リリース)が正しいDLLバージョンを取得するようにするにはどうすればよいですか?

ビルド後のイベントで使用$(ConfigurationName)して、デバッグ/リリースモードを確認できます。したがって、ライブラリを参照できます。

リソースアプローチを使用している場合は、デバッグ/リリースモードに基づいてコピーするようにプロジェクトファイルを変更する必要があります。詳細はこちらをご覧ください

于 2013-01-08T21:13:16.557 に答える