0

我想弄清楚 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 文件被复制,但没有为此定义预构建或构建后事件。

4

1 回答 1

0

通过 Build -> Configuration Manager 检查您的构建配置。

从活动解决方案配置中选择发布。

应该在构建和发布(构建列)中选择所有项目。

于 2013-01-22T10:46:25.043 回答