是否有用于检测具有重复GUID的Visual Studio项目的工具?

时间:2009-10-16 09:27:33

标签: visual-studio

创建新的Visual Studio C ++项目时,有两种方法:运行向导然后痛苦地更改项目中的所有必要设置,或者只复制和现有项目,重命名那里的所有内容并将文件添加到其中。

除了.vcproj文件存储项目GUID之外,第二个变体很棒。当两个或多个项目在一个解决方案中时,此GUID用于跟踪项目依赖项和启动项目。如果一个解决方案中的任何两个项目具有相同的GUID,则可能会出现问题 - 依赖关系丢失,并且下次解决方案重新加载时将重置启动项目。

显然,需要一种工具来扫描文件系统子树并检测具有相同GUID的项目。在我开始编写之前......有没有现成的工具?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

    1. 如果您已经有替代品,请在文本中替换Guid的所有实例。

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

  5. 写下文件的更改内容。

  6. 这是它的长短。我希望有所帮助。

答案 1 :(得分:0)

您可以尝试使用此工具。它旨在合并/重新定位解决方案,但作为奖励,它可以检测并重新生成多个解决方案/项目中的重复guid。

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