Jakie jest znaczenie tagu ProjectTypeGuids w pliku projektu programu Visual Studio


99

Jakie jest znaczenie tagu ProjectTypeGuids w projekcie Visual Studio? Kiedy utworzyłem aplikację WPF, widzę tutaj dwa identyfikatory GUID.

{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}**

Czy to reprezentuje aplikacje typu WPF i Windows?

Jeśli utworzę własny typ projektu (.myproj), który ma pliki .xaml i .cs, co powinienem wypełnić te tagi ProjectTypeGuids? Czy powinienem również wypełnić tag ProjectType?

Byłoby też lepiej, gdyby ktoś rozróżnił tagi ProjectType i ProjectTypeGuids *.

Odpowiedzi:


139
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} to identyfikator GUID dla projektu C #
  • {60dc8134-eba5-43b8-bcc9-bb4bc16c2548} jest dla projektu w pakiecie smakowym WPF

Więc twój ProjectTypeGuidsjest dla projektu WPF C #.

Możesz zobaczyć znaczenie różnych identyfikatorów GUID w rejestrze:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Projects dla ProjectTypeGuids
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages dla odniesień do pakietów w jakimś projekcie

Niektóre ProjectTypeGuidy

Windows (C #) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C ++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Aplikacja internetowa {349C5851-65DF-11DA-9384-00065B846F21}
Witryna internetowa {E24C65DC-7377-472B-9ABA-BC803B73C61A}
WCF {3D9AD99F-2412-4246-B90B-4EAA41C64699}
WPF {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
XNA (Windows) {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox) {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune) {D399B71A-8929-442a-A9AC-8BEC78BB2433}
Silverlight {A1591282-1198-4647-A2B1-27E5FF5F6F3B}
ASP.NET MVC {F85E285D-A4E0-4152-9332-AB1D724D3325}
ASP.NET MVC 4 {E3E379DF-F4C6-4180-9B81-6769533ABE47}
Test {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Folder rozwiązań {2150E333-8FDC-42A3-9474-1A3956D46DE8}      

1
Okay, jeśli teraz chcę utworzyć własny projekt (.myproj) z plikami .xaml, czy powinienem dodać do pliku projektu ten identyfikator GUID?
sudarsanyes

Czy naprawdę potrzebujesz nowego typu projektu, jeśli jest to projekt z plikami .xaml i .cs? Jeśli to zrobisz, myślę, że będziesz musiał użyć innego Guid.
Julien Hoarau

1
Dzięki temu pomogło mi to podczas scalania ASP.NET MVC z istniejącym projektem ASP.NET WebForms i chciałem, aby menu zawartości zwisało z nowych folderów Kontrolery, widoki itp.
Rick Glos

1
@Meligy Aby uzyskać listę identyfikatorów GUID, zobacz tę odpowiedź .
Athari

6
Dlaczego do cholery mieliby używać do tego identyfikatora GUID? Czy nie mogliby po prostu, no wiesz, użyć „Windows (C #)” do oznaczenia projektu C # zamiast jakiegoś tępego identyfikatora GUID, który musisz wyszukać w rejestrze systemu Windows we wszystkich miejscach.
Sandy Chapman

20

Z MZ-Tools: Lista znanych typów projektów Poradniki :

Każdy projekt programu Visual Studio ma typ projektu (projekt systemu Windows, projekt urządzenia inteligentnego, projekt witryny sieci Web itp.), Aw niektórych przypadkach więcej niż jeden typ (podtypy lub smaki).

Każdy typ projektu jest identyfikowany przez unikalny przewodnik, więc każdy projekt ma co najmniej jeden typ przewodnika.

Przewodniki typu projektu są zazwyczaj przechowywane w pliku projektu:

<PropertyGroup>
    <ProjectTypeGuids>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    ...
</PropertyGroup> 

Ale w przypadku niektórych projektów specjalnych (takich jak niektóre projekty baz danych) i projektów bez pliku (takich jak projekty witryn sieci Web) typ projektu jest również przechowywany w pliku rozwiązania:

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SqlServerProject1", "SqlServerProject1.vbproj", "{BE5F0BE0-93CD-4FCE-A853-9096A442DF1B}"
EndProject

Guids typu projektu są przechowywane w kluczu rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<version>\Projects. Jednak nie wszystkie Guidy przechowywane w tym kluczu rejestru są rzeczywistymi typami projektów. Niektóre z nich służą tylko do udostępniania szablonów projektów (dla projektów C # i VB.NET), a inne służą do innych celów. Poniższa tabela zawiera listę znanych typów projektów Guids.

Project Type Description                 Project Type Guid

Windows (C#)                             {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET)                         {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++)                     {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application                          {349C5851-65DF-11DA-9384-00065B846F21}
Web Site                                 {E24C65DC-7377-472B-9ABA-BC803B73C61A}
Distributed System                       {F135691A-BF7E-435D-8960-F99683D2D49C}
Windows Communication Foundation (WCF)   {3D9AD99F-2412-4246-B90B-4EAA41C64699}
Windows Presentation Foundation (WPF)    {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
Visual Database Tools                    {C252FEB5-A946-4202-B1D4-9916A0590387}
Database                                 {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}
Database (other project types)           {4F174C21-8C12-11D0-8340-0000F80270F8}
Test                                     {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Legacy (2003) Smart Device (C#)          {20D4826A-C6FA-45DB-90F4-C717570B9F32}
Legacy (2003) Smart Device (VB.NET)      {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}
Smart Device (C#)                        {4D628B5B-2FBC-4AA6-8C16-197242AEB884}
Smart Device (VB.NET)                    {68B1623D-7FB9-47D8-8664-7ECEA3297D4F}
Workflow (C#)                            {14822709-B5A1-4724-98CA-57A101D1B079}
Workflow (VB.NET)                        {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}
Deployment Merge Module                  {06A35CCD-C46D-44D5-987B-CF40FF872267}
Deployment Cab                           {3EA9E505-35AC-4774-B492-AD1749C4943A}
Deployment Setup                         {978C614F-708E-4E1A-B201-565925725DBA}
Deployment Smart Device Cab              {AB322303-2255-48EF-A496-5904EB18DA55}
Visual Studio Tools for Apps (VSTA)      {A860303F-1F3F-4691-B57E-529FC101A107}
Visual Studio Tools for Office (VSTO)    {BAA0C2D2-18E2-41B9-852F-F413020CAA33}
SharePoint Workflow                      {F8810EC1-6754-47FC-A15F-DFABD2E3FA90}
XNA (Windows)                            {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox)                               {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune)                               {D399B71A-8929-442a-A9AC-8BEC78BB2433}
SharePoint (VB.NET)                      {EC05E597-79D4-47f3-ADA0-324C4F7C7484}
SharePoint (C#)                          {593B0543-81F6-4436-BA1E-4747859CAAE2}
Silverlight                              {A1591282-1198-4647-A2B1-27E5FF5F6F3B}
ASP.NET MVC 1.0                          {603C0E0B-DB56-11DC-BE95-000D561079B0}
ASP.NET MVC 2.0                          {F85E285D-A4E0-4152-9332-AB1D724D3325}
ASP.NET MVC 3.0                          {E53F8FEA-EAE0-44A6-8774-FFD645390401}
ASP.NET MVC 4.0                          {E3E379DF-F4C6-4180-9B81-6769533ABE47}

Nie mogę znaleźć tych przewodników z lokalizacji rejestru w systemie Windows 8, czy MS przenosi je w inne miejsce?
Vincent

@Vincent Te identyfikatory GUID są przechowywane gdzieś w plikach wykonywalnych programu Visual Studio i powiązanych produktów.
Athari

3
@Vincent: W 64-bitowym systemie Windows identyfikatory GUID typu projektu są przechowywane w kluczu rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\<version>\Projects.
Andreas Bilger

Jest bardzo dokładna lista dostępnych projecttypeguids tutaj: codeproject.com/Reference/720512/...
Frederik Struck-SCHöNING

12

Wątek na msdn już się rozpoczął i dużo tam dyskutowano. Jeśli ktoś chciałby się o tym dowiedzieć, sprawdź jakie jest znaczenie tagu ProjectTypeGuids w pliku projektu Visual Studio

ProjectTypeGuids jest używany przez program Visual Studio do agregacji projektów. W Twoim przykładzie masz projekt WPF (reprezentowany przez 60dc8134-eba5-43b8-bcc9-bb4bc16c2548 ) projekt C # (reprezentowany przez FAE04EC0-301F-11D3-BF4B-00C04F79EFBC ).

Jeśli masz niestandardowy typ projektu działający zarówno z .xaml, jak i .cs, powinieneś spróbować dodać niestandardowy identyfikator projektu (określony przez identyfikator GUID fabryki projektu), jak poniżej:

<ProjectTypeGuids>{YourProjectFactoryClassGUID};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} </ProjectTypeGuids>


2
To smutne, że nigdzie (w tym udostępnione przez Ciebie strony) nie wyjaśnia jasno, dlaczego potrzebni są pomocnicy projektu. Ktoś z MS wyjaśnił na udostępnionej przez ciebie stronie, że wytyczne dotyczące typów projektów służą tylko do agregacji projektów. Co to znaczy? Kto wie.
Cary
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.