ビジュアル スタジオでビルド前の奇妙な動作を確認したいと考えています。
単一の Visual Studio 2008 ソリューションには、以下が含まれます。
- ネイティブ C++ ライブラリ プロジェクト、
- マネージド c++/cli ライブラリ プロジェクト (ネイティブ プロジェクトのラッパー)
- ac# コンソール プロジェクト (cli ラッパーを使用)
マネージ c++/cli プロジェクトにはネイティブ c++ プロジェクトへの
依存関係があり、c# プロジェクトには c++/cli プロジェクトへの依存関係があります。依存関係はすべて、個々の dll ではなく、プロジェクトを対象としています。
デバッグ モードでは、すべて正常に動作します。メインの c# プロジェクトを実行すると、すべての依存プロジェクトの変更がチェックされ、再コンパイルされ、ネイティブ dll がそれぞれの出力ディレクトリにコピーされます。
リリース モードでは、ネイティブ dll は自動的にコピーされません。
ビルド後のイベントを手動で定義して dll をコピーできることはわかっていますが、デバッグ モードで自動的にコピーされるのはなぜですか? どのプロジェクトにも、ビルド前またはビルド後のイベントは定義されていません。
これをデバッグモードでは自動的に機能させ、リリースモードでは機能させない黒魔術は何ですか?
(補遺)
以下は、デバッグ モードのビルド ログからの抜粋です。
2>------ Neues Erstellen gestartet: Projekt: CppManaged, Konfiguration: Debug Win32 ------
2>Die Zwischen- und Ausgabedateien für das Projekt "CppManaged" mit der Konfiguration "Debug|Win32" werden gelöscht.
2>Kopieren von "c:\LocalProjects\mysolution\UnmanagedCpp\Debug\unmanaged.dll" in das Zielverzeichnis...
2>Kopieren von "c:\LocalProjects\mysolution\UnmanagedCpp\Debug\unmanaged.pdb" in das Zielverzeichnis...
2>Kompilieren...
2>Stdafx.cpp
2>Kompilieren...
...
そして、リリースモードの同じログは次のとおりです。
2>------ Neues Erstellen gestartet: Projekt: CppManaged, Konfiguration: Release Win32 ------
2>Die Zwischen- und Ausgabedateien für das Projekt "CppManaged" mit der Konfiguration "Release|Win32" werden gelöscht.
2>Kompilieren...
2>Stdafx.cpp
2>Kompilieren...
...
デバッグ モードでは、dll および pdb ファイルがコピーされますが、これに対して定義されたビルド前またはビルド後のイベントはありません。