2008-09-09 12 views
12

Pliki programu Visual Studio Solution zawierają dwa identyfikatory GUID dla każdego wpisu projektu. Myślę, że jeden z nich pochodzi z AssemblyInfo.csIdentyfikatory GUID w pliku SLN

Czy ktoś wie na pewno, skąd pochodzą i do czego są one używane?

+0

Jakieś końcowe rozwiązanie z pełnym kodem źródłowym próbującym o tym pracować? – Kiquenet

Odpowiedz

13

Ani GUID GUID jest taka sama jak z AssemblyInfo.cs (czyli GUID dla samego zespołu, nie przywiązany do Visual Studio, ale produkt końcowy kompilacji).

Tak, dla typowej linii w pliku SLN (otworzyć .sln w notatniku lub innym edytorze-of-wybór, jeśli chcesz to zobaczyć):

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleSandbox", "ConsoleSandbox\ConsoleSandbox.csproj", "{55A1FD06-FB00-4F8A-9153-C432357F5CAC}" 

Drugi GUID to unikatowy identyfikator GUID sam projekt. Plik Rozwiązanie wykorzystuje to do map innych ustawień do tego projektu:

GlobalSection(ProjectConfigurationPlatforms) = postSolution 
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Debug|Any CPU.Build.0 = Debug|Any CPU 
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Release|Any CPU.ActiveCfg = Release|Any CPU 
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Release|Any CPU.Build.0 = Release|Any CPU 

EndGlobalSection

Pierwszy GUID jest faktycznie GUID to unikatowy identyfikator GUID dla samego roztworu (wierzę). Jeśli masz rozwiązanie z więcej niż jednym projektem, zobaczysz coś podobnego do następującego:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleSandbox", "ConsoleSandbox\ConsoleSandbox.csproj", "{55A1FD06-FB00-4F8A-9153-C432357F5CAC}" 
EndProject 
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Composite", "..\CompositeWPF\Source\CAL\Composite\Composite.csproj", "{77138947-1D13-4E22-AEE0-5D0DD046CA34}" 
EndProject 
+0

parsowanie w C# dla pliku sln? Szkoda, że ​​plik sln nie jest formatem XML. @JasonOlson – Kiquenet

+5

Pierwszy identyfikator GUID identyfikuje typ projektu, jak wspomniano tutaj (skrótowo) - http://msdn.microsoft.com/en-us/library/bb165951(v=vs.90).aspx. Zobacz także http://www.mztools.com/Articles/2008/MZ2008017.aspx listę typów projektów. (Nadal zastanawiam się, czy istnieje specjalny przewodnik dla folderu rozwiązania ...) – yoyo

+1

Dzięki za link @yoyo. Identyfikator GUID folderu wydaje się być {2150E333-8FDC-42A3-9474-1A3956D46DE8}. – Giles

6

According to MSDN:

[Project] Oświadczenie zawiera unikalny identyfikator GUID projektu i rodzaju GUID projekt . Informacje te są używane przez środowisko w celu znalezienia pliku projektu lub plików należących do rozwiązania , a zestaw VSPackage wymagany jest dla każdego projektu: . Identyfikator GUID projektu jest przekazany do IVsProjectFactory w celu załadowania konkretnego VSPackage związanego z projektem , a następnie projekt jest ładowany przez VPackage przez .