VS 复制没有生成事件的依赖 dll

本文关键字:事件 依赖 dll 复制 VS | 更新日期: 2023-09-27 17:55:12

我在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 文件,但没有为此定义生成前或生成后事件。

VS 复制没有生成事件的依赖 dll

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

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

应在生成和发布(生成列)中选择所有项目。