3

我正在用 C++ VS2010 构建一个 DLL。

我通过添加“d”更改了 DEBUG TargetName 的值,因此“TargetName”的定义现在是“$(ProjectName)d”。

一切都构建得很好 - 所有 DEBUG 构建文件名都有一个后缀“d” - 这样调试和发布文件都可以存在于一个目录中(这个项目是大量项目的一小部分)。

但是,当我使用 DEBUG 目标按 F7 时,项目总是会构建。例如,假设我的项目名为“MyProj”。在 RELEASE 中,我正在生成“MyProj.dll”和所有其他文件(MyProj.lib/.exp/.pdb/...) - 在 DEBUG 中生成“MyProjd.dll”等。所有这些文件在它们各自中看起来都很好目录,但 VS 总是在 F7 上的 DEBUG 中构建。在 RELEASE 中,VS 正确地确定项目是最新的并且什么都不做。

所以我在 VS 中使用<system.diagnosticsdevenv.exe.config 中的 > 启用调试跟踪来设置 CPS=4 并重新启动 VS。使用(sysinternals)DebugView我可以看到触发了调试重建,因为VS正在检查“MyProj.lib”和“MyProj.exp”而不是“MyProjd.lib”和“MyProjd.exp”,即它检查错误文件(不存在),因此始终会启动构建。

这是一个已知问题还是有一些设置可以解决这个问题?设置 /IMPLIB 根本没有帮助 - 这似乎是 VS 的“制作”方面的一个问题 - 总是构建正确的文件(如果不必要的话!)所以这是一个烦恼而不是一个主要问题......

谢谢

缺口

4

1 回答 1

0

我以前也见过这种行为。不确定哪个是必需的步骤,但我通过以下方式解决:

  • 构建->“干净的解决方案”
  • 退出 Visual Studio
  • 删除预编译的头文件和输出文件夹(我想我也删除了 .sdf)
  • 重建一切
于 2013-11-12T13:47:01.233 回答