我想弄清楚 Visual Studio 中有一些奇怪的预构建行为。
单个 Visual Studio 2008 解决方案包含:
- 一个原生 c++ 库项目,
- 托管 c++/cli 库项目(本机项目的包装器)
- ac# 控制台项目(使用 cli 包装器)
托管的c++/cli项目对native 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 文件被复制,但没有为此定义预构建或构建后事件。