我有一个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.sln
和library.vcproj
中的libray项目。library.vcproj
包含在其他几个解决方案中,因此仅提交更改将影响其他几个文件。
是什么导致这种行为? GUID或项目引用是否存储在其他位置?
我正在使用 Visual Studio 2005 。
最佳答案
我找到了这种现象的原因。这不是VS错误,实际上是健壮的行为!
还有另一个包含在具有相同GUID的solution.sln
中的库,因此VS更新传入的library.vcproj
的GUID。
深入svn日志后,我发现有人从花药库复制了library.vcproj
文件并仅编辑了库名。这两个库都将大多数构建配置数据和其他内容共享到.vcproj
文件中,但是忘记更改GUID值。
我为之感到羞耻,但是...某人竟然是我。
感谢您的评论和时间来考虑这个问题。