【问题标题】:What causes Visual Studio 2005 Out-Of-Order Command Line Builds?什么导致 Visual Studio 2005 无序命令行构建?
【发布时间】:2023-03-13 12:38:02
【问题描述】:

在 Visual Studio 2005 中,我有一个解决方案,其中包含通过“项目依赖关系”对话框指定的显式依赖关系。

例如,当我通过 devenv /rebuild Release 构建时,项目的构建顺序与加载 IDE 时不同。这是我指定的依赖项不允许的顺序。

在某些情况下,devenv 会崩溃 :(

日志在显示顺序的每一行之前显示一个数字,我认为这是依赖引起的顺序:

11>MyExeProject - 1 个错误,0 个警告

但是,构建似乎是按该顺序开始中断并以另一个顺序继续 - 这是行不通的。所以 8 可能会在 11 之前完成构建。如果 8 中有 11 个链接,那就有问题了。

在 IDE 中发生了类似的重新排序,但构建顺序仍然保持完整性。

需要通过命令行构建,有什么想法或原因是什么?

【问题讨论】:

    标签: windows visual-studio visual-c++ visual-studio-2005


    【解决方案1】:

    好的,我相信这是真正的答案。

    多处理器构建已启用。依赖顺序仍然在 IDE 中强制执行,但不是通过命令行,至少在 VS 2005 中是这样。

    关闭它是通过工具/选项/构建和运行。将最大值设置为 1。

    【讨论】:

    • 当我将构建移动到多处理器系统并找到相同的解决方案时遇到了类似的问题。
    【解决方案2】:

    确保您已正确设置解决方案中的依赖项。这会直接影响构建顺序。

    【讨论】:

    • 重新排序的问题是因为多个内核/线程/处理器同时进行多个构建。微软试图提高效率,但他们失败了。
    【解决方案3】:

    如果在 IDE 中构建时 devenv 没有为您崩溃,那么您已经很幸运了。

    以下解决方法令人讨厌,但它对我有用,叹息。重新启动并将 BIOS 设置为仅允许单个 CPU 内核运行。

    【讨论】:

    • 你说的很有趣,我在任务管理器中看到,有时会运行多个 cl.exe 副本。
    • 当然,我们希望运行多个 cl.exe 副本,我们希望多个内核用于其预期目的,并且我们希望 devenv.exe 找到一些方法来避免在这样做时崩溃。叹息。
    • 然后打开任务管理器,设置devenv解决方案的进程亲和性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多