【问题标题】:Very odd build problem非常奇怪的构建问题
【发布时间】:2010-03-26 19:48:45
【问题描述】:

这个问题让我困惑了一年多,看起来很奇怪而且很晦涩。当我构建我的解决方案时,它抱怨缺少引用的 DLL。当我重建它时,问题就消失了。每当我进行清理时,都会返回,即必须尝试构建两次才能成功。

这是含糊的,但如果有必要,我可以对解决方案结构给出更好的解释。由于解决方法是简单地构建两次,我从来没有费心给它更多的关注,但它非常烦人。

此外,构建失败是因为 DLL 似乎不存在,因此在之后引用它的代码由于缺少 DLL 中的类型而失败。下次我启动构建时,它工作正常。

更新:

  • 引用的 DLL 是外部的(来自 CodePlex 的 ValidationFramework),位于源代码树中。
  • 我的所有项目都没有复制 DLL,只是其中一些项目引用了它。
  • 在 Debug 和 Release 版本中都会发生这种情况。

刚刚发现添加项目 A 引用 ValidationFramework.dll 相关,项目 B 也是如此,但项目 B 引用项目 A。现在,当发生构建错误时,总是当编译器转到项目 B 时,即项目A 在第一次和第二次构建尝试时总是成功构建。

此外,当项目 B 失败时,我可以一遍又一遍地单击“构建”,但它确实需要“重建”,因此无论“修复”正在发生的问题发生在构建项目 B 之前(因为问题本身也可以)。

【问题讨论】:

  • 您的所有 .dll 是否都包含在项目中,或者您是否在文件系统中引用了 dll?你有没有在构建事件中复制 .dll 的项目?
  • @vfilby - 查看问题更新。

标签: visual-studio-2005 build c++-cli


【解决方案1】:

缺少的 DLL 是您工作区中正在构建的项目之一吗?您是否设置了项目依赖项,以便必须在构建使用项目之前构建 DLL 项目?

【讨论】:

  • 您能否成功构建任何引用该 DLL 的单个项目?您是否查看过是否有顺序(首先构建项目 A,然后构建项目 B,等等)可以让您的构建在第一次尝试时成功?
  • 两次尝试的构建都是相同的,但是我刚刚更新了问题以反映您关于订购的问题以及它如何影响构建过程。
【解决方案2】:

这听起来有点熟悉。我可能在 vs.net 2003 或 2005 中经历过这种情况,我不记得了。但它的表现是这样的:

在调试版本中,引用的 C++/CLI 将被正确复制到使用程序集文件夹,但是当我发布版本时,它会突然中断,因为引用项目找不到它们。结果证明这是一个 VS.NET 错误,我认为该错误已在服务中修复,但在此期间,我添加了一些构建后步骤,以通过蛮力将程序集移动到需要的位置。

您的调试版本似乎每次都能正常工作吗?

【讨论】:

  • 更新了问题,但无论调试还是发布都会出现问题。
猜你喜欢
  • 2021-08-26
  • 1970-01-01
  • 2013-02-07
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多