Visual Studio / MSBUILD在更新源代码时不会更新.lib文件



我有一个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的团队兼容。

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

似乎我们遇到了与提出这个问题的人相同的问题。还有一个关于Microsoft连接的错误报告。

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

确保"常规\目标名称"和"库管理员\输出文件"的项目属性匹配,并且它们匹配所有配置。也值得在"图书馆员\命令行"页面上查看上述内容。

最新更新