我有一个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。

当在Visual Studio中重新打开solution.sln时,一切正常,但是创建了一个新的GUID来替换solution.slnlibrary.vcproj中的libray项目。
library.vcproj包含在其他几个解决方案中,因此仅提交更改将影响其他几个文件。

是什么导致这种行为? GUID或项目引用是否存储在其他位置?

我正在使用 Visual Studio 2005

最佳答案

我找到了这种现象的原因。这不是VS错误,实际上是健壮的行为!

还有另一个包含在具有相同GUID的solution.sln中的库,因此VS更新传入的library.vcproj的GUID。

深入svn日志后,我发现有人从花药库复制了library.vcproj文件并仅编辑了库名。这两个库都将大多数构建配置数据和其他内容共享到.vcproj文件中,但是忘记更改GUID值。

我为之感到羞耻,但是...某人竟然是我。

感谢您的评论和时间来考虑这个问题。

10-07 13:12