P/Invoke を使用してプロジェクトから非 .NET dll を呼び出しています。つまり、.dll は常に .exe のディレクトリに存在する必要があります。
コンパイル時に.dllを出力ディレクトリに自動的にコピーし、.dllをセットアップに自動的に含めるように、この依存関係をVisual Studioに伝える方法はありますか? または、これを手動で行う必要がありますか?
P/Invoke を使用してプロジェクトから非 .NET dll を呼び出しています。つまり、.dll は常に .exe のディレクトリに存在する必要があります。
コンパイル時に.dllを出力ディレクトリに自動的にコピーし、.dllをセットアップに自動的に含めるように、この依存関係をVisual Studioに伝える方法はありますか? または、これを手動で行う必要がありますか?
プロジェクトに .DLL を追加するだけです。
Properties
そのファイルのペインを選択し、およびに設定Build Action
します。Content
Copy to Output Directory
Copy if newer
このファイルをプロジェクトにコピー/リンクし、プロパティ ウィンドウで [ビルド アクション] を [なし] に、[出力ディレクトリにコピー] を [新しい場合はコピー] または [常にコピー] に設定します。
または、任意のバッチ スクリプトを指定できる「ビルド前イベント」と「ビルド後イベント」を使用できます。
この方法は最初のオプションよりも柔軟性があるため、2 番目のオプションを好みます。
また、MSBuild ファイルを変更して、ファイルをコピーするタスクを追加することもできます。
プロジェクトに .DLL を追加するだけの問題の 1 つは、デバッグ ビルドとリリース ビルドに異なるバージョンの DLL が必要になる可能性があることです。DLL のデバッグ バージョンとリリース バージョンの両方をファイルに追加し、構成に基づいて不適切なものを除外できると思われるかもしれませんが、それを行う方法が見つかりませんでした。私はVisual Studio 2010を使用しています。これはVS6で昔はうまくいったと確信しています。