将现有项目添加到解决方案中会编辑项目文件

4
我有一个C++解决方案(solution.sln),我想在其中包含一个现有的库(library.vcproj),所以我在Visual Studio中打开solution.sln,并为它包含library.vcproj文件。然后,我设置项目依赖关系和一些包含路径来使其编译。一切正常运作。
当我要把这些更改提交到仓库(svn)时,我注意到library.vcproj已经改变了。我检查差异,发现只是项目的GUID发生了变化。我查看solution.sln的差异,并发现,正如我所预期的那样,新的项目GUID正在用于识别library.vcproj
我已经做过这个操作数不清的时间了,但我从来没有看到过这种行为。
为了避免修改library.vcproj文件的问题,我还原了对它的更改,并手动编辑solution.sln,将该项目的新GUID替换为以前的GUID。
重新在Visual Studio中打开solution.sln后,一切正常,但是新的GUID已经取代了solution.slnlibrary.vcproj中的库项目的GUID。 library.vcproj包含在其他几个解决方案中,因此仅提交更改将影响文件。
是什么导致了这样的行为?GUID或项目引用存储在其他地方吗?
我正在使用Visual Studio 2005

+1 有趣。奇怪。我也从未见过这种情况发生。 - John Dibling
这里没有问题 -- 请向微软提交错误报告?看起来你没有使用VS 2010 -- 或许已经修复了。 - Lou Franco
@Lou:目前我不认为这是一个 bug,因为这不是正常的行为。我正在使用 Visual Studio 2005。 - Antonio Pérez
1个回答

4
我找到了这种行为的原因。这不是VS的错误,它实际上是一种健壮的行为! solution.sln中包含另一个具有相同GUID的库,因此VS更新传入的library.vcproj的GUID。
通过挖掘svn日志,我发现有人将library.vcproj文件从另一个库复制并仅编辑了库名称。两个库共享大部分构建配置数据和其他东西到.vcproj文件中,但忘记更改GUID值。
我很惭愧...那个人竟然是我。
感谢您的评论和考虑问题的时间。

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