在Visual Studio 2010中,清理/构建成功但重建失败

4

我在一个解决方案中创建了两个项目,一个名为vm的静态库和一个名为vmx的控制台应用程序。我使用Framework和References的新方法来创建vm对vmx的依赖关系。我还向两个项目添加了x64平台。

现在,当我选择Rebuild Solution时,我会得到以下输出:

1>------ Rebuild All started: Project: vm, Configuration: Debug Win32 ------
1>  vm.c
1>  vm.vcxproj -> D:\Shared\Dynos\Build\Visual Studio 2010\Solutions\..\..\..\Lib\Win32\Debug\vm.lib
2>------ Rebuild All started: Project: vmx, Configuration: Debug Win32 ------
2>  main.c
2>LINK : fatal error LNK1104: cannot open file 'D:\Shared\Dynos\Lib\Win32\Debug\vm.lib'
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========

在vmx编译之前,似乎vm.lib在构建后被删除了。

如果我选择“清除解决方案”,然后再选择“构建解决方案”,我会得到以下输出:

1>------ Build started: Project: vm, Configuration: Debug Win32 ------
1>  vm.c
1>  vm.vcxproj -> D:\Shared\Dynos\Build\Visual Studio 2010\Solutions\..\..\..\Lib\Win32\Debug\vm.lib
2>------ Build started: Project: vmx, Configuration: Debug Win32 ------
2>  main.c
2>  vmx.vcxproj -> D:\Shared\Dynos\Build\Visual Studio 2010\Solutions\..\..\..\Lib\Win32\Debug\vmx.exe
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

一切正常。

有人可以为我解释一下这里发生了什么吗?

谢谢。

5个回答

4
最近我也遇到了这个问题,经过反复思考,我意识到在几个项目中输出目录是相同的。 因此,项目A可以被成功重建,但是当“重建”项目B时,会清除输出目录,包括ProjectA的.lib和.dll文件,随后的项目重建将失败。
我们对自动构建的解决方案是进行清理,然后进行构建,而不是进行重新构建或清理/重新构建。 显然,另一种选择是更改项目以各自拥有它们自己的输出目录。
希望这能帮助到某些人!

3
我找到了解决我的问题的方法。解决方案是不要在项目设置中使用框架和引用功能,而只使用旧的项目依赖系统。我删除了我的引用并点击了“项目依赖项”对话框中的复选框,现在一切都正常了。奇怪!我猜框架和引用只适用于C#项目,而应该避免用于C++项目。

1
对我来说,被清理的是中间目录,以便在构建下一个项目之前进行清理。这真的很令人困惑,因为我不知道确切地将会把什么分开到那个目录中,而我的解决方案和项目文件都在该目录中。
如果您的解决方案文件*.sln和引用的项目文件*.vcxproj都在一个目录中,则将$(TargetName)\添加到项目属性>配置属性>常规>中间目录的值中,或者将其替换为$(Configuration)\Int\$(ProjectName)\
对我来说,这是必需的,因为我也在其他解决方案中使用该项目。

1
我遇到了类似的问题。某些版本的Visual Studio存在这个问题(请参考参考资料)。我之前使用的是Visual Studio Community 2022 (64-bit) Version 17.2.6,后来切换到了其他版本(Microsoft Visual Studio Community 2019 Version 16.11.18Microsoft Visual Studio Community 2022 RC (64-bit) Version 17.0.0 RC2),问题得到了解决。

0

1)可能是一些依赖问题

或者

2)在重新构建期间可能会保留一些旧的中间文件,这些文件在清理时被删除,并在新的正确构建期间被替换。


我认为这不是依赖问题,因为只有一个依赖项并且我已经设置好了。只是重新构建失败了,但清理/构建是可以的。这很奇怪。这是在一个新文件夹中设置的全新项目。 - Cthutu
无论是否存在 64 位构建配置,我都遇到了同样的问题。我删除输出文件并重新构建,它会失败;我删除输出文件并构建,它会成功!我不知道为什么。 - Cthutu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接