更新源时,Visual Studio / MSBUILD不会更新.lib文件

时间:2013-01-29 13:09:49

标签: visual-studio-2010 msbuild

我有一个带有库项目的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的其他团队兼容。

谷歌没有透露任何合理的解决方案。虽然它确实揭示了其他人也遇到类似问题的事实。

2 个答案:

答案 0 :(得分:1)

我们遇到的问题似乎与提出this问题的人有同样的问题。 Microsoft Connect上还有一个bug report

简而言之 - 我们的中间文件夹与某些配置上的%temp%文件夹相同。我们通过修改所有Visual C ++项目的中间文件夹来解决问题。

答案 1 :(得分:0)

确保“General \ Target Name”和“Librarian \ Output File”的项目属性匹配,并且它们匹配所有配置。 值得在“Librarian \ Command Line”页面上查看以上内容。