Quelle est la signification de la balise ProjectTypeGuids dans le fichier de projet Visual Studio

99

Quelle est la signification de la balise ProjectTypeGuids dans un projet de studio visuel? Lorsque j'ai créé une application WPF, je vois deux GUID ici.

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

Cela représente-t-il des applications de type WPF et Windows?

Si je crée mon propre type de projet (.myproj) contenant des fichiers .xaml et .cs, que dois-je remplir ces balises ProjectTypeGuids? Dois-je également avoir besoin de remplir la balise ProjectType?

Il serait également préférable que quelqu'un différencie les balises ProjectType et ProjectTypeGuids *.

sudarsanyes
la source

Réponses:

139
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} est le GUID du projet C #
  • {60dc8134-eba5-43b8-bcc9-bb4bc16c2548} est pour le projet dans le package de saveur WPF

Donc, vous ProjectTypeGuidsêtes pour un projet WPF C #.

Vous pouvez voir la signification des différents GUID dans le registre:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Projects pour ProjectTypeGuids
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages pour la référence des packages par certains projets

Certains ProjectTypeGuids

Windows (C #) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C ++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Application Web {349C5851-65DF-11DA-9384-00065B846F21}
Site Web {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}
Dossier de solutions {2150E333-8FDC-42A3-9474-1A3956D46DE8}      
Julien Hoarau
la source
1
Ok, maintenant si je veux créer mon propre projet (.myproj) avec des fichiers .xaml dedans, dois-je assaisonner le fichier de projet avec ce GUID ??
sudarsanyes
Avez-vous vraiment besoin d'un nouveau type de projet s'il s'agit d'un projet avec des fichiers .xaml et .cs? Si vous le faites, je pense que vous devrez utiliser un Guid différent.
Julien Hoarau
1
Merci, cela m'a aidé lors de la fusion d'ASP.NET MVC dans un projet ASP.NET WebForms existant et je voulais que le menu de contenu soit suspendu aux nouveaux dossiers de contrôleurs, de vues, etc.
Rick Glos
1
@Meligy Pour la liste des GUID, consultez cette réponse .
Athari
6
Pourquoi diable utiliseraient-ils un GUID pour cela? Ne pourraient-ils pas simplement, vous savez, utiliser «Windows (C #)» pour signifier un projet C # au lieu d'un GUID obtus que vous devez rechercher dans le registre Windows de tous les endroits.
Sandy Chapman
20

Depuis MZ-Tools: Liste des types de projets connus Guids :

Chaque projet Visual Studio a un type de projet (projet Windows, projet Smart Device, projet de site Web, etc.) et dans certains cas plus d'un type (sous-types ou saveurs).

Chaque type de projet est identifié par un Guid unique, de sorte que chaque projet a un ou plusieurs Guids de type de projet.

Les guides de type de projet sont généralement stockés dans le fichier de projet:

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

Mais pour certains projets spéciaux (tels que certains projets de base de données) et les projets sans fichier (tels que les projets de site Web), le type de projet est également stocké dans le fichier de solution:

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

Les guides de type de projet sont stockés dans la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<version>\Projects. Cependant, tous les guides stockés dans cette clé de registre ne sont pas des types de projets réels. Certains d'entre eux sont utilisés uniquement pour fournir des modèles de projet (pour les projets C # et VB.NET) et d'autres ont d'autres objectifs. Le tableau suivant répertorie les guides de type de projet connus.

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}
Athari
la source
Je ne trouve pas ces guides à partir de l'emplacement du registre sous Windows 8, est-ce que MS les déplace vers un autre endroit?
Vincent
@Vincent Ces GUID sont stockés dans les fichiers exécutables de Visual Studio et des produits associés quelque part, je suppose.
Athari
3
@Vincent: sous Windows 64 bits, les GUID de type de projet sont stockés dans la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\<version>\Projects.
Andreas Bilger
Il y a une liste assez complète des types de projets disponibles ici: codeproject.com/Reference/720512/…
Frederik Struck-Schøning
12

Un thread à msdn a déjà été lancé et beaucoup de choses ont été discutées là-bas. Si quelqu'un est intéressé à savoir à ce sujet, vérifiez Quelle est la signification de la balise ProjectTypeGuids dans le fichier de projet de Visual Studio

ProjectTypeGuids est utilisé par Visual Studio pour l'agrégation de projets. Dans votre exemple, vous avez un projet WPF (représenté par 60dc8134-eba5-43b8-bcc9-bb4bc16c2548 ) C # (représenté par FAE04EC0-301F-11D3-BF4B-00C04F79EFBC ).

Si vous avez un type de projet personnalisé fonctionnant à la fois avec .xaml et .cs, vous devez essayer d'ajouter votre GUID de projet personnalisé (spécifié par le GUID de l'usine de projet) comme ci-dessous:

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

sudarsanyes
la source
2
Il est triste que nulle part (y compris les pages partagées par vous) n'explique clairement pourquoi les types de projet sont nécessaires. Quelqu'un de MS a expliqué sur la page que vous avez partagée que les types de projet sont uniquement destinés à l'agrégation de projets. Qu'est-ce que ça veut dire? Qui sait.
Cary