【发布时间】:2015-07-28 19:47:31
【问题描述】:
我在 MSVS 2015 中有一个项目,它每次都在虚假地重建,即构建总是启动 MSBuild,然后给出一堆“所有输出都是最新的”。后跟“构建成功”的消息。而不是应该什么都不做。在 MSVS 的早期版本中,有一种(从未记录过的 AFAIK)方法可以启用详细调试日志记录,以快速找到原因,如解释的那样,例如here。不幸的是,这似乎对 MSVS 2015 没有任何作用。
有谁知道是什么取代了它或其他调试这个问题的方法?
【问题讨论】:
-
您是否将构建输出详细程度设置为诊断(工具->选项->项目和解决方案->构建和运行)?通常,相当冗长的构建协议应该会提示您出了什么问题。最有可能的是,某些文件设置为“始终复制”......顺便说一句,如果什么都不做,你可能会得到输出行,比如“跳过 xy,未选择构建项目”
-
对不起,我应该提到我确实尝试过这个,但它并没有真正帮助,因为日志以
------ Build started: Project: foobar, Configuration: Debug Win32 ------之类的开头,如果有一些解释为什么它从 3000 开始后面的行,我找不到。我真正的问题是为什么它首先开始构建。 -
3000? 300000 更有可能 :D 但是如果你知道你在找什么,你可以大大减少这个:看看每个项目的第一行。在那里,VS 说明了它想要构建项目的原因,例如“13>Project 'Rotor (Rotor\Rotor)' 不是最新的。上次构建时使用未保存的文件。”或“17>项目'ProductDatabaseImport'不是最新的。输入文件'something.dll'在输出文件''之后被修改。”
-
在特定示例中的构建日志中没有出现“不是最新的”或“上次构建”的情况,这促使我回到这个问题,不幸的是......
-
FWIW 我终于找到了为什么这个特定项目一直在重建:它是一个从生成的 C++ 文件构建的静态库,不知何故,图书管理员没有更新库上的时间戳(几乎可以肯定是因为生成的文件没有改变,所以目标文件可能也没有改变)。所以输出比依赖项更早。我花了很长时间才找到它,所以我仍然希望有更好的方法来做到这一点。
标签: visual-studio-2015 msbuild