【发布时间】:2013-01-05 13:45:22
【问题描述】:
我想弄清楚 Visual Studio 中的一些奇怪的预构建行为。
单个 Visual Studio 2008 解决方案包含:
- 一个原生 c++ 库项目,
- 托管的 c++/cli 库项目(本机项目的包装器)
- 一个 c# 控制台项目(使用 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 文件,但没有为此定义构建前或构建后事件。
【问题讨论】:
-
多年来,我一直在处理原生、托管和 C++/CLI 项目的解决方案。我从来没有能够解决“黑魔法”并开始依赖构建事件。
标签: c# visual-studio visual-studio-2008 c++-cli dependencies