【问题标题】:Visual Studio 2010 doesn't rebuild changed code unless I manually select "Rebuild"除非我手动选择“重建”,否则 Visual Studio 2010 不会重建更改的代码
【发布时间】:2011-03-30 05:19:17
【问题描述】:

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

  1. 即使我进行大量更改,它也能很快“编译”并且
  2. 如果我尝试设置断点,它会给出代码已更改且未更改的警告 设置断点。

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

如果我改为从菜单中选择重建项目,它就会工作。然而,这种方式阻碍了我通常的工作流程。我经常忘记这样做,然后花 10 分钟试图找出我的更改到底出了什么问题。更糟糕的是,有时会出现我没有立即注意到的构建错误。

F6 来“重建”解决方案也没有任何作用。我可能会搞砸哪些设置会导致这种行为?

【问题讨论】:

  • 检查以确保您的项目引用确实是项目引用,而不是对来自其他项目的输出程序集的引用。
  • 嗯...我不认为这与我的参考有关,因为即使我在实际启动的项目中更改代码也会发生这种情况。

标签: visual-studio-2010 build


【解决方案1】:

啊,我想通了。在太晚之后搞乱构建设置时,我自然而然地做了一些愚蠢的事情。以下是要检查的事项:

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

【讨论】:

  • 我认为 Visual Studio 会以某种方式定期损坏此文件,因为在我使用它的整个过程中,这种确切的事情会时不时地发生。
  • 这很有帮助。我在 Windows 更新后注意到了这一点。
  • Visual C# 2010 Express 的同样问题影响了我。似乎默认情况下,如果配置管理器中的项目将“任何 CPU”作为其平台,“构建”将默认不被选中。
  • 非常感谢!我忘记了“构建>>配置管理器>>检查“构建”选项并手动重建项目。在您按预期指导所有工作之后!
【解决方案2】:

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

【讨论】:

  • 这不准确。准确地说,解决方案具有“配置”。一种配置是“活动”配置;这控制了构建的内容。每个项目也有“配置”。解决方案配置可以包含项目配置的任何组合/设置。按照惯例,您通常会将项目配置命名为与解决方案配置相同的名称,但这不是必需的,Visual Studio 也不关心这些配置名称是否匹配。您要做需要验证的是,您选择了您打算构建的项目配置和平台。
  • ... 也就是说,VS 将在“活动”配置中为每个项目构建 一个 版本 - 您为该项目选择的那个版本。这些可能都是相同的(例如“Debug”+“x64”),但它们可能不同。例如,您可能有一个“x64”解决方案配置,它为某些类库构建“Any CPU”,但为其他类库和主 .exe 构建“x64”。
  • @ToolmakerSteve 感谢您的信息。一些例子会有所帮助。
  • @Pierre - 请参阅Walkthrough: Build an application,在6. Choose the OK button 之后,是配置管理器窗口的屏幕截图。在右上角,“活动解决方案平台”是x64。在中间,ExpenseItIntros“平台”是x64。这是默认设置。但这不一定是;您可以ExpenseItIntro 构建为“Any CPU”(作为x64 配置的一部分),方法是将“Platform”下拉菜单更改为“Any CPU”。有关说明,请参阅stackoverflow.com/a/5229805/199364
  • @Pierre ...实际上我给出的stackoverflow链接解释了如果您的整个应用程序是“任何CPU”会发生什么。将单个项目“任何 CPU”绑定到 X64 应用程序是不同的。在这种情况下,意思是该项目的 CLR 代码可以是 32 位或 64 位的 JIT,没有任何问题。因此,您可以一次构建 that 项目,并在 32 位和 64 位应用程序中使用它。 [这是一个不寻常的场景;通常,在为 x64 构建时,您会将所有项目设置为 x64。我只是在评论 user3585447 对于如果某些项目是“任何 CPU”会发生什么是错误的。]
【解决方案3】:

在 2020 年与 VS 2019(社区版)和 WPF 项目未重建(视为“最新”)有类似问题,即使引用的项目已重建。上面的建议(工具->选项和配置管理器)在很多地方都得到了满足,尽管对我没有用。

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

<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>

【讨论】:

    猜你喜欢
    • 2018-08-05
    • 2013-09-17
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多