除非我手动选择“ Rebuild”,否则Visual Studio 2010不会重建更改的代码


70

在过去一周左右的时间里,我注意到Visual Studio 2010不会重新编译代码,除非我强制执行。这是带有WPF的C#4.0项目。我打了F5,如果代码已更改,它似乎使用了rebuild,然后启动应用程序。相反,它现在在左下方的状态栏中说“构建成功”并启动该应用程序。但是,它实际上并没有重建应用程序。我可以说是因为:

  1. 即使我进行了大量更改,它也会很快“编译”,
  2. 如果我尝试设置一个断点,它会警告代码已更改并且没有设置断点。

不管代码中是否有错误,都会发生这种情况,因此,我不相信如果构建失败,它将启动较旧的版本。

如果我改为从菜单中选择以重建项目,则它将起作用。但是,这阻碍了我通常的工作流程。我半经常忘记这样做,然后花10分钟尝试弄清楚我的更改到底出了什么问题。更糟糕的是,有时会出现一些我不会立即注意到的构建错误。

按下F6以“重建”解决方案也不执行任何操作。我可能会修改哪些设置会导致此行为?


检查以确保您的项目引用确实是项目引用,而不是对其他项目输出的程序集的引用。
戴夫·马克尔

嗯...我不认为这与我的引用有关,因为即使在我实际启动的项目中更改代码时也会发生。
davidtbernal,2010年

Answers:


132

加,我想通了。在过晚的夜晚之后弄乱构建设置时,我自然会做些愚蠢的事情。这里是要检查的东西:

  1. 工具>>选项>>项目和解决方案>>构建并运行>>检查“在运行中,项目过期时”是否设置为“始终构建”或“提示构建”
  2. 生成>>配置管理器>>检查是否为要使用的每个配置都选中了要生成的所有项目的“生成”。

6
我认为Visual Studio会以某种方式定期破坏该文件,因为在我使用它的整个时间里,这种确切的事情会时不时发生。
davidtbernal'1

这非常有帮助。Windows Update之后,我注意到了这一点。
evanb

相同的问题对Visual C#2010 Express产生了影响。似乎默认情况下,如果Configuration Manager中的项目将“任何CPU”作为其平台,则“ Build”将默认为不选中。
Brian A. Henning 2014年

非常感谢你!我忘了“构建>>配置管理器>>检查”构建”选项,然后手动重建项目。在您指导所有作品之后!
Maks,2015年


5

另外,如果解决方案中有多个项目,请检查配置管理器。如果您有一些项目“ Any CPU”和一些“ x86”,那么将仅构建相同架构的项目。与“ Debug”和“ Realese”配置相同。


1
这是不准确的。准确地说,解决方案具有“配置”。一种配置是“活动”配置;另一种是“活动”配置。这控制了构建的内容。每个项目还具有“配置”。SOLUTION配置可以包含项目配置的任何组合/设置。按照约定,您通常将项目配置的名称与解决方案配置的名称相同,但这不是必需的,Visual Studio也不关心这些配置名称是否匹配。什么,你需要验证,就是你所选择的项目配置和平台,你打算兴建。
制造商史蒂夫

1
...也就是说,VS将在“活动”配置中为每个项目构建一个版本-为该项目选择的版本。这些可能全部相同(例如,“ Debug” +“ x64”),但是它们可能不同。例如,您可能具有“ x64”解决方案配置,该配置为某些类库构建“ Any CPU”,而为其他类库和主.exe构建“ x64”。
制造商

@ToolmakerSteve感谢您的信息。一些例子会有所帮助。
Pierre

1
@Pierre-请参阅演练:在之后6. Choose the OK button构建应用程序是Configuration Manager窗口的屏幕截图。在右上方,“活动解决方案平台”为x64。在中间,ExpenseItIntro的“平台”为x64。这是默认值。但这不是必须的。通过将“平台”下拉菜单更改为“任何CPU”,您可以将其构建ExpenseItIntro为“任何CPU”(作为x64配置的一部分)。有关说明,请参见stackoverflow.com/a/5229805/199364
制造商史蒂夫

1
@Pierre ...实际上,我给出的stackoverflow链接说明了如果您的整个应用程序是“ Any CPU”,将会发生什么。将单个项目“ Any CPU”绑定到X64应用程序是不同的。在那种情况下,其含义是该项目的CLR代码可以是JIT 32位或64位,没有任何问题。因此,您可以一次构建项目,然后在32位和64位应用程序中使用它。[这是一个不寻常的情况;通常,在为x64构建时,会将所有项目设置为x64。我只是在评论说user3585447在某些项目为“任何CPU”的情况下会发生错误。]
ToolmakerSteve

1

在2020年出现了类似的问题,VS 2019(社区版)和WPF项目都没有重建(被视为“最新”),即使所引用的项目已经重建。上面的建议(“工具”->“选项和配置管理器”)在很多地方都可以使用,尽管对我而言不起作用。

最终更改.csproj文件并添加以下行(在ProertyGroup下)对我有用:

<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.