2010-03-26 91 views
0

这一个让我难倒了一年多,看起来很奇怪,真的很晦涩。当我构建我的解决方案时,它会抱怨缺少引用的DLL。当我重建它时,问题就消失了。每当我做一次干净的回报,即在成功之前必须尝试两次构建。非常奇怪的构建问题

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

此外,构建失败,因为它似乎只是缺少DLL,所以代码后引用它失败,因为从DLL中缺少类型。下次启动构建时,它可以正常工作。

更新:

  • 引用的DLL是外部的(ValidationFramework CodePlex从),位于源树。
  • 我的项目都没有复制DLL,只是其中一些引用它。
  • 这发生在Debug和Release版本中。

刚刚找到与之相关的还补充说,项目A引用的ValidationFramework.dll一样,项目B,但B项目的参考项目A.现在,当出现生成错误,它总是当编译器去项目B ,即项目A总是在第一次和第二次构建尝试中成功构建。另外,当项目B失败时,我可以一遍又一遍地点击“构建”而不起作用,它确实需要“重建”,所以无论“修复”发生的问题发生在构建项目B之前问题本身也可能)。

+0

是否所有的.dll文件都包含在项目中,还是引用了dll的int文件系统?你有任何项目在生成事件中复制.dll文件吗? – vfilby 2010-03-26 19:53:23

+0

@vfilby - 查看问题的更新。 – 2010-03-26 20:02:52

回答

1

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

+0

@jwismar - 查看有问题的更新。 – 2010-03-26 19:59:39

+0

您可以成功构建引用DLL的任何单个项目吗?你有没有看过是否有排序(先建立项目A,然后项目B等),让你的构建在第一次尝试中成功? – jwismar 2010-03-26 20:06:37

+0

构建在两次尝试上都是相同的,但是我只是更新了问题以反映您的订购问题以及它如何影响构建过程。 – 2010-03-26 21:17:17

0

这听起来含糊不清。我可能已经与vs.net 2003或2005经历过这一点,我不记得。但它展示了如下:

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

您的调试版本是否每次都有效?

+0

已更新的问题,但无论调试还是发布,都会出现问题。 – 2010-03-26 20:54:24