除非我手动选择“重新生成”,否则 VisualStudio2010不会重新生成已更改的代码

在过去的一周左右,我注意到除非我强制 VisualStudio2010重新编译代码,否则它不会重新编译代码。这是一个带 WPF 的 C # 4.0项目。我点击 F5,它似乎使用重建,如果代码已经改变,然后启动应用程序。相反,它现在在左下角的状态栏中显示“ BuildSuccess”并启动应用程序。但它并没有真正重建应用程序。我能看出来是因为:

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

无论代码中是否存在错误,这种情况都会发生,所以我不认为在构建失败时会启动旧版本。

如果我从菜单中选择重新构建项目,那么它就可以工作。然而,这种做法妨碍了我的日常工作流程。我有时会忘记做这件事,然后花10分钟时间想弄清楚我的改变到底出了什么问题。更糟糕的是,有时候有些构建错误我没有马上注意到。

F6“重新构建”解决方案也不会做任何事情。什么样的设置会导致这种行为?

39308 次浏览

天啊,我明白了。这是很自然的一件愚蠢的事情,当我在一个太晚的夜晚之后搞乱了构建设置。以下是需要检查的事项:

  1. 工具 > > 选项 > > 项目和解决方案 > > 构建和运行 > > 检查“ On Run,when Project are out of date”被设置为“ Always Build”或“ Prompt to Build”
  2. Build > > Configuration Manager > > 检查“ Build”是否为您想要为需要使用的每个配置构建的所有项目进行了检查。

此外,如果解决方案中有多个项目,请检查配置管理器。 如果您有一些项目“任意 CPU”和一些“ x86”,将只构建具有相同体系结构的项目。 与“ Debug”和“ Realese”配置相同。

在2020年也有类似的问题,VS 2019(Community Edition)和 WPF 项目没有重建(被认为是“最新的”) ,即使引用的项目已经重建。上面的建议(工具-> 选项和配置管理器)在很多地方都能得到满足,尽管对我来说不起作用。

最终,修改.csproj 文件并添加以下代码行(在 ProertyGroup 下)对我很有用:

<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>