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

sha*_*oth 5 visual-studio

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

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

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

Jas*_*n D 1

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

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

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

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

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

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

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

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

这就是它的长处和短处。我希望这有帮助。