¿Cuál es la importancia de la etiqueta ProjectTypeGuids en el archivo de proyecto de Visual Studio?

99

¿Cuál es el significado de la etiqueta ProjectTypeGuids en un proyecto de Visual Studio? Cuando creé una aplicación WPF, veo dos GUID aquí.

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

¿Representan estos tipos de aplicaciones WPF y Windows?

Si creo mi propio tipo de proyecto (.myproj) que tiene archivos .xaml y .cs, ¿qué debo completar en estas etiquetas ProjectTypeGuids? ¿Debería también tener que completar la etiqueta ProjectType?

También sería mejor si alguien diferenciara las etiquetas ProjectType y ProjectTypeGuids *.

sudarsanyes
fuente

Respuestas:

139
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} es el GUID para el proyecto C #
  • {60dc8134-eba5-43b8-bcc9-bb4bc16c2548} es para el proyecto en el paquete de sabor de WPF

Entonces tu ProjectTypeGuidses para un proyecto de WPF C #.

Puede ver el significado de los diferentes GUID en el registro:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Projects para ProjectTypeGuids
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages para referencia de paquetes por algún proyecto

Algunos ProjectTypeGuids

Windows (C #) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C ++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Aplicación web {349C5851-65DF-11DA-9384-00065B846F21}
Sitio 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}
Prueba {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Carpeta de soluciones {2150E333-8FDC-42A3-9474-1A3956D46DE8}      
Julien Hoarau
fuente
1
Bien, ahora si quiero crear mi propio proyecto (.myproj) con archivos .xaml, ¿debo darle sabor al archivo del proyecto con ese GUID?
sudarsanyes
¿Realmente necesita un nuevo tipo de proyecto si se trata de un proyecto con archivos .xaml y .cs? Si lo hace, creo que tendrá que usar un Guid diferente.
Julien Hoarau
1
Gracias, esto me ayudó al fusionar ASP.NET MVC en un proyecto ASP.NET WebForms existente y quería que el menú de contenido estuviera colgando de las nuevas carpetas Controladores, Vistas, etc.
Rick Glos
1
@Meligy Para obtener la lista de GUID, consulte esta respuesta .
Athari
6
¿Por qué diablos iban a utilizar un GUID para esto? ¿No podrían simplemente, ya sabes, usar "Windows (C #)" para indicar un proyecto de C # en lugar de un GUID obtuso que tienes que buscar en el registro de Windows de todos los lugares?
Sandy Chapman
20

De MZ-Tools: Lista de guías de tipo de proyecto conocidas :

Cada proyecto de Visual Studio tiene un tipo de proyecto (proyecto de Windows, proyecto de dispositivo inteligente, proyecto de sitio web, etc.) y en algunos casos más de un tipo (subtipos o sabores).

Cada tipo de proyecto se identifica mediante una guía única, por lo que cada proyecto tiene una o más guías de tipo de proyecto.

Las guías de tipo de proyecto se almacenan generalmente en el archivo del proyecto:

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

Pero para algunos proyectos especiales (como algunos proyectos de bases de datos) y proyectos que carecen de un archivo (como proyectos de sitios web), el tipo de proyecto también se almacena en el archivo de la solución:

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

Las guías de tipo de proyecto se almacenan en la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<version>\Projects. Sin embargo, no todos los Guids almacenados en esa clave de registro son tipos de proyectos reales. Algunos de ellos se utilizan solo para proporcionar plantillas de proyecto (para proyectos de C # y VB.NET) y otros tienen otros propósitos. La siguiente tabla enumera las Guías de tipos de proyectos conocidos.

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
fuente
No puedo encontrar estas guías desde la ubicación del registro en Windows 8, ¿MS las mueve a otro lugar?
Vincent
@Vincent Estos GUID se almacenan en los archivos ejecutables de Visual Studio y productos relacionados en algún lugar, supongo.
Athari
3
@Vincent: en Windows de 64 bits, los GUID del tipo de proyecto se almacenan en la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\<version>\Projects.
Andreas Bilger
Hay una lista bastante completa de tipos de proyectos disponibles aquí: codeproject.com/Reference/720512/…
Frederik Struck-Schøning
12

Ya se ha iniciado un hilo en msdn y se ha discutido mucho por ahí. Si alguien está interesado en saber sobre esto, verifique ¿Cuál es el significado de la etiqueta ProjectTypeGuids en el archivo de proyecto de Visual Studio?

Visual Studio usa ProjectTypeGuids para la agregación de proyectos. En su ejemplo, tiene un proyecto C # WPF (representado por 60dc8134-eba5-43b8-bcc9-bb4bc16c2548 ) (representado por FAE04EC0-301F-11D3-BF4B-00C04F79EFBC ).

Si tiene un tipo de proyecto personalizado que funciona con .xaml y .cs, debe intentar agregar su guid de proyecto personalizado (especificado por el GUID de fábrica de su proyecto) de la siguiente manera:

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

sudarsanyes
fuente
2
Es triste que en ninguna parte (incluidas las páginas compartidas por usted) se explique claramente por qué se necesitan los tipos de proyecto. Alguien de MS explicó en la página que compartió que los tipos de proyectos son solo para la agregación de proyectos. Qué significa eso? Quién sabe.
Cary