sln 파일의 Project GUID 목록이 있습니다.Project GUID가 주어지면 프로젝트의 이름/경로를 어떻게 찾을 수 있습니까?
프로그래밍 방식으로 각 GUID에 해당하는 프로젝트를 찾아야합니다.
어떻게하면됩니까?
sln 파일의 Project GUID 목록이 있습니다.Project GUID가 주어지면 프로젝트의 이름/경로를 어떻게 찾을 수 있습니까?
프로그래밍 방식으로 각 GUID에 해당하는 프로젝트를 찾아야합니다.
어떻게하면됩니까?
모든 비주얼 스튜디오 설정이이 같은 키를 레지스트리에 상주 :
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]
버전 "11.0", "9.0"(VS 2008), "10.0"(2010 VS)처럼 될 수 있습니다 (VS 2012). 그러나 Visual Studio는 사용자 지정 '하이브'키로 시작할 수 있기 때문에 다른 것도 될 수 있습니다 (devenv.exe 명령 줄의/RootSuffix 매개 변수 참조).
그래서, 정상적인 작동을 위해, 프로젝트의 GUID가 여기에 있습니다 : Visual Studio에서
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]\Projects
프로젝트 표준 프로젝트 (C#을, VB.NET 등) 또는 집계 프로젝트합니다 (WPF "맛"이 될 수 있습니다 C# 또는 VB.NET을 통해).
일반적으로 프로젝트에는 프로젝트 유형이 포함 된 Visual Studio 패키지 (바이너리)의 GUID가 포함 된 "패키지"키가 있습니다.
패키지 설명은 여기에서 찾을 수 있습니다 :
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]\Packages
기본 패키지 (C#을, VB.NET, C++, ...)이 기본 COM 서버로 구현되고 경로가 InprocServer32
키에 정의되어 있습니다. 관리되는 패키지는 MSCOREE.DLL을 InprocServer32
키로 정의하며 패키지가 GAC에 없으면 CodeBase
키가 있고 패키지가 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
에는 GUID가 이미있는 경우 linq 쿼리를 수행 할 수있는
ProjectsByGuid
속성이 있습니다.이를 수행하는 코드는 다음과 같이 약간 보입니다.
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;
이 정보가 도움이되기를 바랍니다.
프로그램이 Visual Studio에서 진행 중인가? 패키지로? 추가 기능으로? 너는 이미 어떤 물건을 가지고 있니? –
sln 파일에서 프로젝트 종속성을 추출하려고합니다. sln 파일에서 동일한 종속성을 언급하기 때문에 동일한 프로젝트에 대해 sln 파일을 구문 분석하고 Project GUID 목록을 얻었습니다. 이제 모든 GUID의 프로젝트 이름/경로를 가져 와서 텍스트 파일에 쓰고 싶습니다. 해당 질문에 답변합니까? – aromore