回答
所有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