有没有一种工具可以检测Visual Studio项目中的重复GUID?

5
创建新的Visual Studio C++项目有两种方式:一是运行向导,然后在项目中痛苦地更改所有必要的设置;二是只需复制现有项目,将其中的所有内容重命名并添加文件即可。第二种方法很好,但是.vcproj文件存储了项目GUID。此GUID用于跟踪项目依赖项和启动项目,当一个解决方案中有两个或多个项目时。如果一个解决方案中有两个具有相同GUID的项目,则可能会出现问题-依赖关系丢失,并且下次重新加载解决方案时启动项目将被重置。显然,需要一种工具来扫描文件系统子树并检测具有相同GUID的项目。在我开始编写之前...是否有已准备好的工具可以做到这一点?

最好是……一个工具,可以复制Visual Studio项目并修复所有GUID、名称和位置。 - Toad
由于GUID是唯一的,因此您可以安全地在所有复制的文件上执行搜索和替换操作。如果它看起来像项目GUID,那么它就是项目GUID。 - MSalters
这就是我的解决方案中发生的事情,有15个复制的解决方案...当我想在一个项目中搜索某些内容(查找所有引用)时,结果我得到了跨所有项目的搜索结果...我猜测是每个解决方案中标识每个项目的GUID的问题。而现在,差不多一年后,我才意识到这一点,尽管并没有真正搜索它 :) 不错。 - Martin Berger
2个回答

1

你可以相对快速地编写这个工具。我已经为我的雇主做过了,但他们对代码很吝啬。使用正则表达式检测 GUID 是“容易”的。

  1. 扫描目录结构以查找感兴趣的文件。将它们的路径保存在内存中的列表中。

  2. 打开每个文件,将整个内容读入内存。

  3. 使用你精心制作的正则表达式查找所有 GUID。

  4. 对于遇到的每个 GUID,请检查字典中是否已经有替换 GUID -- 字典将旧 GUID 映射到新 GUID。

    1. 如果你已经有了一个替换,就用新的 Guid 替换文本中的所有实例。

    2. 如果你没有替换,生成一个新的 Guid,将其存储在字典中,然后用新的 Guid 替换所有实例。

  5. 写入更改后的文件内容。

这就是全部内容。希望能对你有所帮助。


0

你可以尝试使用这个工具,它旨在合并/重定位解决方案,而作为额外的奖励,它可以检测和重新生成多个解决方案/项目中的重复guids。

http://code.google.com/p/merge-solutions/


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