回答
所有Visual Studio安装程序驻留在注册表中,在这样的关键:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]
版本可以像 “9.0”(VS 2008), “10.0”(VS 2010), “11.0”( VS 2012),但它也可以是其他任何东西,因为Visual Studio可以使用自定义的“配置单元”键启动(请参阅devenv.exe命令行的/ RootSuffix参数)。
因此,对于正常运作,项目GUID位于这里:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]\Projects
项目在Visual Studio可以是标准项目(C#,VB.NET等)或聚集项目(WPF的 “味道”通过C#或VB.NET)。
一般来说,项目有一个“Package”键,其中包含包含项目类型的Visual Studio包(二进制文件)的guid。
包的描述是在这里找到:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]\Packages
本地程序包(C#,VB.NET,C++,...)实现为本地COM服务器和路径在InprocServer32
键定义。托管包将MSCOREE.DLL定义为InprocServer32
密钥,并且还有一个CodeBase
密钥,如果该包位于GAC中,则该包不在GAC中,只有Assembly
密钥。
是的。我明白了。 但我需要以编程方式获取相应的项目名称。 有没有办法做到这一点? – aromore
@aromore - 某些项目类型(C#,VB.NET)将项目配置存储为XML,因此您可以打开这些文件(csproj,vbproj)并从那里获取信息,如果这就是您的想法。 –
项目的GUID沿侧存储项目名称.sln文件内像这样:
Project("{Project Type GUID}") = "MyProject",
"Source\MyProject\MyProject.vbproj",
"{AB5BA87B-77D5-4812-B02C-9B4FB87F4EF6}" EndProject
理论上你可以preparse解决方案文件,并建立地图项目到GUID协会。一旦建立了该地图,您应该可以很容易地用实际项目名称替换项目GUID的任何引用。
注意:您在项目文件中看到的第一个GUID是针对项目类型的,而不是实际的项目。这有助于Visual Studio在打开和处理文件时管理要使用的模板。在这种情况下,您需要的是{AB5BA87B-77D5-4812-B02C-9B4FB87F4EF6}。
我可能会很迟才回答这个问题,但希望能帮助其他任何想知道这个问题的人。有几个组件,你想用在C#解析解决方案和项目文件,它们分别是:
Microsoft.Build.Evaluation
和
Microsoft.Build.Construction
随着后期装配有一个名为SolutionFile
类。 Documentation。在文档SolutionFile
中包含属性ProjectsByGuid
,如果您已经拥有GUID,您可以在其上执行linq查询。做到这一点的代码看起来有点像这样:
var guid = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
var pathToSolutionFile = "C:\users\user\source\repos\solution\solution.sln"
var sln = SolutionFile.Parse(pathToSolutionFile);
var projectName = sln.ProjectsByGuid.Where(x => x.key==guid)
.FirstOrDefault().Value?.projectname;
我希望这可以帮助你,或其他任何人。
- 1. 如何在Django项目中找到我的项目名称?
- 2. Gradle:有效的项目名称/路径?
- 3. 删除项目错误:无法删除项目[项目路径和名称]:访问路径'[项目路径和名称]'被拒绝
- 4. 如何在Laravel中删除路径名中的项目名称
- 5. 找到Audio.Media项目的路径
- 6. 从ASP.Net项目找到DLL的路径
- 7. 如何找出OutputCache项目的名称?
- 8. 从项目名称查找API中找到项目
- 9. PowerShell:复制项目找不到路径
- 10. 如何找到更改目录名称的路径?
- 11. Scrapyd无法找到项目名称
- 12. Eclipse PDT将项目名称添加到虚拟主机路径
- 13. 复制项目找不到路径的一部分(在。文件夹名称中)
- 14. 如何找到nodejs中项目的路径?
- 15. 如何在我的Java项目文件中找到我的文件的路径?
- 16. Qt重命名项目的路径
- 17. 获取WPF项目的项目名称
- 18. 如何从测试项目中获取项目的路径?
- 19. 从Ruby Gem中,我如何获取项目的目录路径?
- 20. 项目命名约定:[公司] [项目名称]与[公司项目名称]
- 21. 如何在Joomla项目中找到管理员面板路径
- 22. 如何更改zendframework项目的路径
- 23. 如何将Tika添加到我的项目类路径中?
- 24. 未找到log4j2.xml,但它位于我的Eclipse项目的类路径中
- 25. 将Java项目添加到RCP项目的构建路径
- 26. 在.gitmodules为路径“/项目名”
- 27. Eclipse CDT的“路径必须包括项目和资源名称”
- 28. 如何在项目上使用urlid(路径)切换项目select
- 29. SimpleDB项目名称
- 30. Python名称项目
您的程序是否与Visual Studio一起在进程中运行?作为一个包?作为加载项?你有什么目标? –
我想从sln文件中提取项目依赖关系。 我解析了sln文件,得到了一个Project GUID列表,因为这就是在sln文件中提到依赖关系的方式。 现在,我想获取所有GUID的项目名称/路径并将它们写入文本文件。 这是否回答你的qn? – aromore