我有一个C ++解决方案(solution.sln
),我想要包含一个现有的库(library.vcproj
),所以我在Visual Studio中打开solution.sln
并包含library.vcproj
为它提供文件。然后我设置项目依赖项和一些包含路径以使其编译。一切正常。
当我要将这些更改提交到存储库(svn)时,我注意到library.vcproj
已更改。我检查差异,它只是已更改的项目的GUID。我看一下solution.sln
差异,并发现,正如我所料,新项目GUID正用于识别library.vcproj
。
我已经完成了 gazillion 次,我之前从未见过这种行为。
作为避免library.vcproj
文件修改的解决方法,我将更改还原到它并手动编辑solution.sln
替换项目的前一个新GUID。
在Visual Studio中打开solution.sln
时,一切正常,但是创建了一个新的GUID,替换了solution.sln
和library.vcproj
中的libray项目。
library.vcproj
包含在其他几个解决方案中,因此提交更改会影响其他几个文件。
可能导致这种行为的原因是什么? GUID或项目引用是否存储在其他地方?
我正在使用 Visual Studio 2005 。
答案 0 :(得分:4)
我找到了这种行为的原因。这不是一个VS错误,它实际上是一个强大的行为!
另一个库包含在solution.sln
中且具有相同的GUID,因此VS更新了传入的library.vcproj
的GUID。
深入研究svn日志我发现有人从anther库中复制了library.vcproj
文件并只编辑了库名。两个库都将大部分构建配置数据和其他内容共享到.vcproj
文件中,但忘记更改GUID值。
我很惭愧但是......有人竟然是我。
感谢您的意见和时间来考虑这个问题。