【问题标题】:VS2010 C++/CLI project always thinks VS2012 C# project is out of dateVS2010 C++/CLI项目总是认为VS2012 C#项目已经过时了
【发布时间】:2014-06-02 14:21:34
【问题描述】:

我有一个带有 VS2010 C++/CLI 项目的 VS2012 解决方案,该项目依赖于 VS2012 C# 项目。当我构建 C++/CLI 项目时,它总是构建 C# 项目即使没有对其进行任何更改

使用 here 方法查看 DbgView 输出,我看到以下消息:

项目 'H:\Workspaces\xxxx\ProjectA\ProjectA.vcxproj' 不是最新的 因为 'H:\WORKSPACES\xxxx\ProjectB\BIN\X86\DEBUG\ProjectB.DLL' 是 修改于 06/02/2014 13:05:30,比 'H:\Workspaces\xxxx\ProjectA\bin\Debug\ProjectA.lib' 这是 于 06/02/2014 13:05:29 修改。

地点:

  • ProjectA 是 VS2010 C++/CLI 项目
  • ProjectB 是 VS2012 C# 项目

在 Common Properties >Framework and References 我有以下设置:

  • 复制本地错误
  • 复制本地卫星程序集错误
  • 参考程序集输出
  • 链接库依赖
  • 使用库依赖输入 False

是什么导致 DLL 和 LIB 文件具有不同的时间戳?我可以在设置中更改什么来防止这种情况发生吗?

【问题讨论】:

    标签: c# visual-studio-2010 visual-studio-2012 c++-cli


    【解决方案1】:

    项目 'H:\Workspaces\xxxx\ProjectA\ProjectA.vcxproj' 不是最新的

    这就解释了为什么要重建 C++/CLI 项目。与您的 C# 项目没有任何关系。当然,它正在重建,它的依赖关系发生了变化。

    您尚未找到重建 C# 项目的触发器。向后看。

    请避免使用这些过时的 C++ 构建日志记录技巧。无论如何,问题不是您的 C++ 项目。赞成将 MSBuild 详细程度更改为详细。工具 + 选项、项目和解决方案、构建和运行。并专注于向您展示 C# 项目需要重建的原因的输出,这是您关心的。

    【讨论】:

    • 很好看,我们实际上有一些 C++ 库将复制到输出目录设置为“始终复制”而不是“如果更新则复制”。我们现在确实在 C++/CLI 库中遇到了一个关于签名的额外问题,但如果我无法修复它,我将把它作为一个单独的问题提出。
    【解决方案2】:
    1. 不是直接解决方案,而是紧随其后。尝试从 Redgate 安装 .NET Demon。
    2. 您是否在 ProjectB 中设置了预构建事件?这也可能导致此错误。
    3. 如果您知道不会更改 ProjectB 或者您知道更改很少,您可以尝试将其从解决方案的属性中的构建中删除。

    这有帮助吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2011-02-08
      • 2013-02-11
      • 2018-03-17
      • 2011-02-15
      相关资源
      最近更新 更多