【发布时间】:2013-01-29 13:09:49
【问题描述】:
我有一个带有库项目的 Visual Studio 解决方案,我们称之为 libFoo,还有一个可执行项目 - 我们称之为 Bar,这取决于 libFoo。
例如,当我更改 libFoo/bar.cpp 并尝试构建 libFoo 时,Visual Studio 会编译我的 bar.cpp 文件,但不会重新生成库 libFoo.lib,说它已经是最新的.
我检查了系统时钟。我还验证了bar.obj文件的修改时间实际上是更新的,并且库比obj旧。但它仍然没有重新创建库。
实际的解决方案实际上包含大约 100 个项目,其中一些是库,一些是可执行文件。问题发生在我的 3 名团队成员的计算机上。其余不受影响。我们不知道为什么会发生这种情况,以及如何解决它……或者其他团队成员可能会发生这种情况。
我无法通过使用库和依赖于它的可执行文件创建自己的小型解决方案来重新生成它。所以我相信这是环境问题和我们的解决方案/项目文件问题的某种组合。
谢谢, 亚历克斯。
编辑
该解决方案是在 Visual Studio 2010 上创建的,过去几年在 VS2010 上开发,直到我们开始使用 VS2012。安装了 VS2010 和 VS2012 的用户会出现此问题。解决方案现在是VS2012解决方案,项目使用VS2010平台工具包。
当我们开始使用 VS2012 时,我们的团队迁移了解决方案,但我们将所有 C++ 项目的“平台工具包”保留为 VS2010,以便我们的代码与仍在使用 VS2010 的其他团队兼容。
Google 没有透露任何可行的解决方案。虽然它确实揭示了其他人也遇到过类似问题的事实。
【问题讨论】:
-
可能有点牵强,但您的 .lib 文件是否以某种方式在源代码控制中,因此是只读的?
-
您是否区分了项目/解决方案文件的适用对象和损坏对象?
-
是一样的。当我们从源代码管理中获得一个干净的副本时,就会发生这种情况。
-
libFoo 是静态库吗?我想确认您不是指使用 dll 项目创建的 .lib
-
每个人都有相同的安装级别(即 Visual Studio Service Packs)。另外,您的系统上是否有任何其他版本的 VS。如果是这样,它们是否按照发布的顺序安装。我在无序安装版本时看到了错误的 msbuild 行为。
标签: visual-studio-2010 msbuild