当代码发生更改时,Visual Studio 2010在运行之前没有进行构建

126

多年来,我一直使用F5(开始调试)来构建代码(如果它过期了),然后进行调试。这在VS 2010上也可以运行,但今天它只是开始调试而没有构建。比如,我对项目进行清理,然后按F5键,而不是构建,以便运行它,它会抛出一个错误消息,说exe文件不存在以供运行。我怎样才能使它首先进行构建?发生了什么变化?


1
我遇到了同样的问题。它在一天之间发生了,而且我没有在选项对话框中更改任何内容。Hans的答案解决了我的问题。 - jbe
我最近遇到了这个问题,已经在Microsoft Connect上提交了一个错误报告,请你发表意见来希望他们能解决这个问题https://connect.microsoft.com/VisualStudio/feedback/details/626414/visual-studio-2010-does-not-build-project-when-run-with-debugging-f5 - Jason
10个回答

164

工具 + 选项,项目和解决方案,构建和运行。"运行时,当项目过期时" = 总是构建。下面的一个 = 不启动。


8
刚刚检查过了,设置为“始终构建”……所以不应该出现这种情况。 - jamone
5
我的电脑可以运行。你的电脑曾经能够运行。接下来需要重新启动。 - Hans Passant
3
重启无法解决问题,但将“在运行时,当项目过期时”设置为“始终构建”,改为“不启动”,保存/退出VS,然后再改回来,问题就解决了。 - jamone
3
那是个漏洞。想要提交到connect.microsoft.com吗? - Hans Passant
1
对于我来说(我在VS 2008上),有一个复选框,上面写着“仅在运行时构建启动项目和依赖项”。我取消了勾选,似乎可以工作。 - Chance
显示剩余4条评论

122

我遇到了这个问题,后来发现是配置管理器的问题。我最近将项目从Debug | Mixed CPU更改为Debug | Any CPU,但该项目未设置在此配置下构建。


这对我也解决了问题 - 似乎是那个问题的可能原因。 - gstercken
3
太棒了!这不是你会想到的东西。谢谢。 - Almund
1
是的,这个对我有用!只需在配置管理器中单击所有与构建相关的复选框。谢谢Tim! - chaz
对我来说也解决了一个类似的问题。谢谢! - Austin Thompson
1
我的问题是选择了错误的配置!我有一个独立的项目,每个配置对应一种不同的语言,而组合框设置为其中一个配置。我将其更改为 Debug_Unicode,现在正在构建! - sergiol
这个配置管理员设置(或其缺失)是导致未自动构建问题的缺失组件。谢谢Tim。我仍然很不解为什么一开始会出现这个问题。它浪费了所有开发人员太多时间,并且仍在继续... #摇头 - RayLuo

22

打开配置管理器,检查启动项目的“构建”列中的复选框是否已选中。我曾遇到同样的问题,但复选框不可用,所以我选中了它,现在它可以工作了!


谢谢帮助我。我忽略了这个选项。;) - Skalli

17
除了上述内容外,还要确保在“工具-->选项-->项目和解决方案-->生成和运行”中取消勾选“仅在运行时构建启动项目和依赖项”。

1
我曾经遇到过这个问题,而这就是解决方案。谢谢。 - Roberto Luis Bisbé
1
这个解决了我的问题,但似乎是一个 bug。相关的项目是一个依赖项,应该被构建。 - KingOfHypocrites
如果您有多个启动项目或任何测试项目,那么不勾选此设置是一个可怕的选择。 - cbp
谢谢你!微软应该重新措辞和修改这个让它更有意义。我不清楚它被选中时意味着什么。 - Cameron

10

我也曾经遇到过这个问题。我尝试了所有建议的方法,但仍然无济于事。最终发现我的电脑时钟被向前调整了约12小时,并且我保存在网络驱动器中。文件的时间戳不正确,因此VS认为我的项目无需构建,因为文件非常新。


3
有一段时间,我一直很困惑为什么我的笔记本电脑(双核2GHz,2GB RAM)编译我的网站比我的台式电脑(四核3GHz,16GB RAM)更快。两者都有SSD硬盘。构建选项都设置正确(相同的,核心数=并行构建),然而笔记本电脑能在几秒钟内运行该网站,而台式电脑需要大约30秒。
在网站的“属性页面”下发现了一个额外的选项,在构建设置下,笔记本电脑设置为“不构建”,而台式电脑设置为“构建和运行”。只有在没有检查编译器错误的情况下,在笔记本电脑上运行该网站时才发现它。
这可能会帮助未来的某些人,所以我想把它添加到这篇文章中。

2
对我来说,这是由于构建配置设置而发生的。我的Visual Studio解决方案有许多项目,其中混合了C#和C ++项目。现在我意识到,由于构建配置设置的缘故,Visual Studio默认不构建C ++项目,这在添加新的C ++项目后很明显。我不知道为什么VS在添加新的C#项目时不采用相同的方法。 右键单击解决方案资源管理器中的解决方案文件 -> 单击上下文菜单中的属性 -> 在左窗格中选择“配置属性”节点 -> 选择“配置”节点。它显示解决方案中所有项目的列表。第一个项目LearnDs是一个C ++项目。请注意第一行中构建列中的复选框。它未被选中。这就是为什么Visual Studio 2010不能(按F5)构建我的C ++项目(因为它包含自上次成功构建以来的某些更改)的原因。

enter image description here

当我勾选相应的复选框并保存解决方案的构建配置设置时,它就起作用了。现在每当我按F5键时,我会看到下面的提示,因为VS能够检测到自上次构建以来有一些新的更改。这个提示是因为我的设置在 "工具菜单->选项子菜单->项目和解决方案节点->构建和运行节点" 中被设置为 "运行时,如果项目已过期,则提示构建"。如果您不喜欢这个提示,则将其设置为 "始终构建"。

enter image description here


2
另一个需要检查的点是在解决方案属性页面 -> 配置属性 -> 配置: 确保需要重新编译的项目的“生成”列下的所有复选框都被勾选。

1
我尝试了之前的解决方案,但效果参差不齐。但是每次我去“生成 -> 清理解决方案”似乎都能起作用。
但是每次都要这样做真的很烦人。

1

工具 --> 选项 --> 项目和解决方案。

  1. 对于“在运行时,项目已过期”,设置为始终构建/提示构建。
  2. 取消“仅在运行时构建启动项目和依赖项”的复选框。

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