是否有用于检测具有重复 GUID 的 Visual Studio 项目的工具?
Posted
技术标签:
【中文标题】是否有用于检测具有重复 GUID 的 Visual Studio 项目的工具?【英文标题】:Is there a tool for detecting Visual Studio projects with duplicate GUIDs? 【发布时间】:2009-10-16 09:27:32 【问题描述】:创建新的 Visual Studio C++ 项目时,有两种方法:运行向导,然后痛苦地更改项目中的所有必要设置,或者只是复制现有项目,重命名那里的所有内容并将文件添加到其中。
第二个变体很好,除了 .vcproj 文件存储了项目 GUID。当两个或多个项目位于一个解决方案中时,此 GUID 用于跟踪项目依赖项和启动项目。如果一个解决方案中的任何两个项目具有相同的 GUID,则可能会出现问题 - 依赖项会丢失,并且启动项目会在下次重新加载解决方案时重置。
显然需要一种工具来扫描文件系统子树并在此处检测具有相同 GUID 的项目。在我开始写之前……有现成的工具吗?
【问题讨论】:
或者更好...一个允许复制视觉工作室项目并修复所有 guid、名称和位置的工具 由于 GUID 是唯一的,您可以安全地对所有复制的文件进行搜索和替换。如果它看起来像项目 GUID,它是项目 GUID。 所以这就是我的解决方案中发生的事情,有十五个复制的解决方案...当我想在一个项目中搜索某些东西(查找所有引用)时,结果我得到了一个搜索结果我所有的项目......我猜这个识别解决方案中每个项目的 GUID 是罪魁祸首。我现在遇到了这个问题,差不多一年后,实际上并没有搜索它:) 很好。 【参考方案1】:您可以相对较快地编写该工具。我已经为我的雇主这样做了,但他们对代码很吝啬。使用正则表达式时,检测 GUID 是“容易的”。
扫描目录结构以查找感兴趣的文件。将它们的路径保存在内存列表中。
打开每个文件,将全部内容读入内存。
使用您创建的正则表达式查找所有 GUID。
对于遇到的每个 GUID,检查您是否已经在字典中找到了替换 GUID - 字典将旧 GUID 映射到新 GUID。
如果您已有替换,请替换文本中 Guid 的所有实例。
如果您没有替换,请生成一个,将其存储在字典中,然后用新的替换所有实例。
写入文件的更改内容。
这就是它的长处和短处。我希望这会有所帮助。
【讨论】:
【参考方案2】:您可以尝试使用此工具。它旨在合并/重新定位解决方案,但作为奖励,它可以跨多个解决方案/项目检测和重新生成重复的 guid。
http://code.google.com/p/merge-solutions/
【讨论】:
以上是关于是否有用于检测具有重复 GUID 的 Visual Studio 项目的工具?的主要内容,如果未能解决你的问题,请参考以下文章