我正在将一个复杂的混合C++/.NET解决方案从VS2008迁移到VS2010。
升级后的解决方案在VS2010中运行,但是构建系统总是刷新一个C++/CLI程序集。它没有重新编译任何内容,但链接器会触及该文件。这会在整个构建中向下游产生连锁反应,导致大量依赖项被重新构建。
有什么想法可以找出它为什么认为需要重新链接该文件吗?我已经打开了详细的构建日志记录,但没有突出显示任何内容。
我正在将一个复杂的混合C++/.NET解决方案从VS2008迁移到VS2010。
升级后的解决方案在VS2010中运行,但是构建系统总是刷新一个C++/CLI程序集。它没有重新编译任何内容,但链接器会触及该文件。这会在整个构建中向下游产生连锁反应,导致大量依赖项被重新构建。
有什么想法可以找出它为什么认为需要重新链接该文件吗?我已经打开了详细的构建日志记录,但没有突出显示任何内容。
我只是为了记录而添加这个,以防将来有人遇到这个问题。
我们在一个大型混合FORTRAN/C++项目中遇到了类似的问题,无论是否更改任何内容都需要重新链接。似乎这个问题始于解决方案从VS2008升级到2010,尽管没有人能够完全记得。
最终,我认真研究了它(虽然很烦人,但不足以采取任何行动)。通过排除法,我找到了解决方案:
删除顶层FORTRAN项目(即生成可执行文件的项目)中“附加库目录”中的任何引号。
现在,如果您想要重现此错误,请自行查证。
这似乎只是顶级项目上的问题,并且当这些项目是FORTRAN时 - 引号对C ++项目或创建库的项目没有影响。
如果VS不需要搜索库(例如,如果您的所有库都是内置的,如kernel32.lib),则不会发生重新链接,但无论您的库是否在具有引号的目录中或不同的目录中,都会发生重新链接。
如果有人能够证明这个“特性”,请告诉我!