VS2010 C++/CLI项目始终认为VS2012 C#项目已过期

4
我有一个VS2012的解决方案,其中包含一个依赖于VS2012的C#项目的VS2010 C++/CLI项目。当我构建C++/CLI项目时,即使没有对C#项目进行任何更改,它也总是构建C#项目。使用这里的方法查看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#项目
在“公共属性”>“框架和引用”下,我具有以下设置:
  • 复制本地False
  • 复制本地卫星程序集False
  • 参考程序集输出True
  • 链接库依赖项True
  • 使用库依赖项输入False
是什么导致DLL和LIB文件具有不同的时间戳?我是否可以更改我的设置以防止这种情况发生?
2个回答

3
“H:\Workspaces\xxxx\ProjectA\ProjectA.vcxproj” 项目未更新,这就解释了为什么你的C++/CLI项目需要重新构建。这与你的C#项目无关。当然它需要重新构建,因为其依赖项已更改。
你还没有找到导致C#项目需要重新构建的触发器。回溯一下。
请避免使用过时的C++构建日志技巧。无论如何,问题不在于你的C++项目。建议将MSBuild详细程度更改为详细。工具+选项、项目和解决方案、生成和运行。并关注显示为什么需要重新构建C#项目的输出,这才是你关心的内容。

非常敏锐,我们实际上有一些 C++ 库的“复制到输出目录”设置为“始终复制”,而不是“仅在更新时复制”。现在我们还有一个关于 C++/CLI 库签名的问题,但如果我无法解决它,我将把它作为单独的问题提出。 - openshac

0
不是一个直接的解决方案,但是可以算作第二个选择。试着安装来自Redgate的.NET Demon。 你在ProjectB中有设置预构建事件吗?这也可能导致了这个错误。 如果你知道你不会改变ProjectB或者你知道改变会很少,你可以尝试在解决方案的属性中将其从构建中移除。 这些信息对你有帮助吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接