Visual Studio 2010在调用msbuild之前做了什么?

7
我遇到了一个问题,即Visual Studio未调用msbuild来构建我的解决方案。从命令行调用msbuild会得到正确的构建结果,但在Visual Studio中启动构建会导致“一切都是最新”的消息。手动编译.cpp文件似乎部分或完全解决了问题。
重新启动VS2010并不能纠正这个问题,所以我觉得VS2010必须在某个地方编写自己的依赖项信息。我的意思是指实际上需要构建哪些文件,也就是自上次成功构建以来哪些文件已被修改。
在调用msbuild之前,Visual Studio是否执行自己的依赖项检查?它将此信息存储在何处?

2
问题是 - 它不做什么? :-) - user405725
你是在问依赖检查,比如哪些项目需要在其他项目之前构建,还是文件变更检测? - tuxedo25
@tuxedo25:更改了文件检测,我将在帖子中尝试澄清。 - Dan O
你是在谈论使用makefile项目调用msbuild吗? - Gene Bushuyev
不,这是一个标准的C++解决方案,由几个c++ vcprojs组成,我假设Visual Studio会将实际构建交给msbuild,因为这是我的谷歌搜索所指示的。 - Dan O
显示剩余6条评论
3个回答

1

如果你想从Visual Studio GUI中强制进行构建,可以选择“Rebuild All”。这将触发所有源文件的编译。

常规构建无法正常工作的问题可能与计算机中的时钟设置不正确有关。确保您的系统时钟正确,包括时区。然后进行项目“清理”并尝试重新构建。


没有时间戳问题,我已经在几台电脑上验证了这个问题。自从安装了VS2010 SP1以来,我就再也没有看到过这个问题,但是我没有找到任何发行说明来表明这个问题是否被特别修复了。 - Dan O
确实,SP1并没有解决这个问题。问题可能是.sln文件特定的。 - Dan O

0

我偶尔会看到这种行为,但我无法解释它是如何被破坏的。

尝试删除所有中间文件:在DebugRelease目录中的所有内容,以及类型为.suo.ncb.aps的项目名称文件。然后重新构建所有内容。

如果您遇到与我相同的问题,这往往会使VS正常工作一段时间——几周或50-100次构建(以先到者为准)。


1
不要删除.sln文件! 这是Visual Studio解决方案文件,它定义了需要构建的项目以及其他几个重要信息。 - Spire
@Spire:我已经从我的回答中将其删除了:我浏览了一个C++项目,它的内容看起来是不必要的:.vcproj不是唯一必要的粘合剂吗? - wallyk
“.sln”文件包含配置信息(例如“Debug”和“Release”),平台信息(例如“Win32”和“x64”),项目依赖关系以及通常无法自动重新创建的其他重要内容。针对您关于“.vcproj”的问题:在Visual Studio 2010中,不应删除“.vcxproj”和“.vcxproj.filters”文件。 - Spire

0

我爸爸说要检查你的“obj文件夹”并清理它。VS2010看到那里有东西,所以它认为没有新的内容需要构建。


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