【问题标题】:Added Makefile project to Visual Studio 2015 solution is always out of date将 Makefile 项目添加到 Visual Studio 2015 解决方案总是过时
【发布时间】:2016-04-12 05:32:34
【问题描述】:

我有一个相当大的解决方案(80 个项目)。最近我升级到 VS2015U1 并修改了解决方案以包含一个 makefile (nmake) 项目,这是所有其他项目的先决条件。其目的是这个 makefile 应该将一些第三方软件复制到项目的 bin 目录中,以便更容易地将它们组合在一起进行测试和打包。

问题是,这个 makefile 项目似乎总是过时的。这意味着当您按 F5 进行测试时,我总是会弹出一个对话框。

我一直在 Google 上搜索,直到我的 Google 员工感到疼痛,包括我在 stackoverflow 上找到的所有内容。列出的解决方案似乎都没有帮助:

  • 没有列出此项目的文件,因此没有文件过期。 我什至把makefile本身作为一个项目文件,但这并没有 帮助。
  • 我在 makefile 项目中添加了一个假输出文件 将其包含在属性中,并导致创建文件 运行时的一个。
  • 我已将构建输出详细程度设置为诊断,并且已退出 广泛地通过.log文件,没有找到任何文件的提示 丢失或过时。
  • 似乎没有其他项目正在重建,只有一个 生成文件项目。当 makefile 运行时,一切似乎都是 将被复制的文件是最新的。
  • 没有与新项目相关的 .tlog 文件。
  • 进行干净的构建或重建没有帮助,这个项目总是过时的。

有人有其他想法吗?

【问题讨论】:

  • 嗨,我也有类似的问题。我将一个大型解决方案迁移到 VS2015 中。其中两个项目是生成文件。它们总是被标记为过期,但即使有构建诊断也没有给出任何理由。你有没有找到办法找出VS2015如此担心的事情?

标签: visual-studio-2015 nmake


【解决方案1】:

开始出现(尽管我找不到任何文档支持)所有 makefile 类型的项目总是过时的。

我发现一个可能的答案是您可以创建一个“实用程序”类型的项目。这种类型的项目只有 Pre-Build、Pre-Link 和 Post-Build 事件。然后,您可以在其中添加 make/nmake 命令。有副作用,但就我而言,这是可以忍受的。

自己尝试一下,看看你的想法,然后在这里报告你的发现。

【讨论】:

  • 有什么副作用?
【解决方案2】:

由于 Visual Studio 使用的 MSBuild 与 nmake 的用途相同,因此我只是将 nmake 项目替换为 .csproj 文件中的直接 MSBuild 项目,并将其作为项目添加到我的解决方案中,从而使其他项目依赖于它。它不会在启动调试器时弹出项目过期对话框,并且它可以正确识别我要创建的文件何时过期。

请参阅MSBuild documentation 以获取有关如何指定构建目标等的参考。

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多