构建发布版

时间:2018-05-13 20:09:40

标签: c++ visual-studio compilation

有时我会对源代码进行少量更改,例如删除一行代码或更改某些值。

案例A

  1. player.y = 100;更改为player.y = 250;
  2. 使用 CTRL编译代码 + F5
  3. 播放器仍显示在y: 100
  4. player.symbol = "O";更改为player.symbol = "P";
  5. 使用 CTRL编译代码 + F5
  6. 播放器现在显示在正确的位置y: 250
  7. 到目前为止,我已尝试

    • 清洁解决方案 - 这是有效的,但每当我做出改变时,我都不必依赖它
    • Build检查Build > Configuration Manager...
    • 下的项目
    • CTRL - SHIFT - B 仍然编译错误的代码。
    • 以管理员身份运行VS - 仍然编译错误的代码。
    • 我查看了可执行文件的创建日期。我编译时不会更新。
    • 在编译之前删除可执行文件,重新创建相同的可执行文件而不进行更改。
    • 我在同一台计算机上的另一个visual studio安装上遇到了同样的问题

    该项目位于本地硬盘上。

    修改 我找到了link。问题似乎非常相似,尽管现在测试时它不仅仅是编辑浮点数。我使用的是Visual Studio Community Version 15.7.1,但在修补之前也遇到了这个问题。

    在构建调试时,这似乎不会发生(到目前为止)。

3 个答案:

答案 0 :(得分:3)

这可能看起来很痛苦,但在进行任何重大更改后,通常最好清理解决方案并重建项目。您可能认为重新编译单个翻译单元将起作用,并且在某些情况下可能是真的,但如果其他目标文件依赖于您刚刚更新的翻译单元,则需要重新编译它们,否则visual studio将使用旧的目标文件以前已经建成。

至于 CTRL + F5 无论您处于debug还是release模式,只需告诉Visual Studio您要运行而不进行调试它与项目或解决方案的编译和构建无关。您确定不会将 CTRL + F5 CTRL + F7 混淆,因为用户SoronelHateir已拥有在commmets中提到?对源代码进行任何更改后,最好先重新编译该单个文件,以确保没有编译错误。然后,最好在解决方案中重建当前项目。

另一方面,如果您的解决方案有多个项目,例如:一个项目是一个静态链接的库,另一个项目是您的主要可执行项目,您所做的更改位于您的库中,具体取决于主项目的方式取决于您可能需要的库项目,至少可能至少重建库项目,在某些情况下,您甚至可能需要重建主要的启动项目。大多数时候只需要重建静态链接的库就足够了;链接库的主程序很少需要重建以查看新的更改,但是有一些罕见的情况都需要重建。

我会再说一遍;是的,必须要做一个干净的解决方案并完成重建似乎很痛苦,但过了一段时间,这是最安全的旅行路径,以确保所有目标文件都是最新的。您在自己的解决方案中看到的是使用更新的代码运行程序的副作用,但输出与旧的目标文件的输出相匹配。这是IDE使用较旧或过时的目标文件的结果,因为您没有重建解决方案。清理解决方案会清除所有旧目标文件以及用于将源代码编译为转换单元以生成相应目标文件的任何中间文件。

IDE中有其他人提到的设置,例如用户:Bo Persson已经从他们的回答中说明,您可以更改Visual Studio重新编译,重建项目或解决方案的行为。

答案 1 :(得分:-1)

在visual studio中,在进行更改后,我总是单击(在菜单栏中):

构建 - 重建解决方案

请注意,这与" CTRL + F5 "不同。和" CTRL - SHIFT - B " 它将始终获取所有更改并重新编译您的程序

答案 2 :(得分:-1)

我尝试了当前解决方案中提到的所有内容,但对我不起作用。然而,在经历了很多挫折之后,我意识到我正在运行我的调试器。尝试转到调试标签,然后按停止调试。最后确保从此下拉框中选择发布(我的是调试)。 referenced dropdown