Qual é o significado da tag ProjectTypeGuids no arquivo de projeto do Visual Studio


99

Qual é o significado da tag ProjectTypeGuids em um projeto de estúdio visual? Quando criei um aplicativo WPF, estou vendo dois GUIDs aqui.

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

Eles representam os tipos de aplicativos WPF e Windows?

Se eu criar meu próprio tipo de projeto (.myproj) com arquivos .xaml e .cs, o que devo preencher nas tags ProjectTypeGuids? Também devo preencher a tag ProjectType?

Também seria melhor se alguém diferenciar as tags ProjectType e ProjectTypeGuids *.

Respostas:


139
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} é o GUID para o projeto C #
  • {60dc8134-eba5-43b8-bcc9-bb4bc16c2548} é para projeto em pacote de sabor WPF

Portanto, você ProjectTypeGuidsé para um projeto WPF C #.

Você pode ver o significado dos diferentes GUID no registro:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Projects para ProjectTypeGuids
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages para referência de pacotes por algum projeto

Alguns ProjectTypeGuids

Windows (C #) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C ++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Aplicativo da web {349C5851-65DF-11DA-9384-00065B846F21}
Site {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}
Teste {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Pasta de solução {2150E333-8FDC-42A3-9474-1A3956D46DE8}      

1
Ok, agora se eu quiser criar meu próprio projeto (.myproj) com arquivos .xaml nele, devo temperar o arquivo de projeto com esse GUID?
sudarsanyes

Você realmente precisa de um novo tipo de projeto se for um projeto com arquivos .xaml e .cs? Se o fizer, acho que terá que usar um Guid diferente.
Julien Hoarau

1
Obrigado, isso me ajudou ao fundir a ASP.NET MVC em um projeto ASP.NET WebForms existente e eu queria que o menu de conteúdo pendurasse as novas pastas Controladores, Visualizações, etc.
Rick Glos

1
@Meligy Para obter a lista de GUIDs, consulte esta resposta .
Athari 01 de

6
Por que diabos eles usariam um GUID para isso? Eles não poderiam simplesmente, você sabe, usar "Windows (C #)" para significar um projeto C # em vez de algum GUID obtuso que você tem que procurar no registro do Windows de todos os lugares.
Sandy Chapman

20

De MZ-Tools: Lista de Guids de tipo de projeto conhecido :

Cada projeto do Visual Studio tem um tipo de projeto (projeto do Windows, projeto do dispositivo inteligente, projeto do site da Web, etc.) e, em alguns casos, mais de um tipo (subtipos ou sabores).

Cada tipo de projeto é identificado por um Guid exclusivo, então cada projeto tem um ou mais Guids de tipo de projeto.

Os Guids de tipo de projeto são geralmente armazenados no arquivo de projeto:

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

Mas para alguns projetos especiais (como alguns projetos de banco de dados) e projetos sem um arquivo (como projetos de site da Web), o tipo de projeto é armazenado também no arquivo de solução:

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

Os Guids do tipo de projeto são armazenados na chave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<version>\Projects. No entanto, nem todos os Guids armazenados nessa chave de registro são tipos de projeto reais. Alguns deles são usados ​​apenas para fornecer modelos de projeto (para projetos C # e VB.NET) e outros têm outras finalidades. A tabela a seguir lista Guids de tipo de projeto conhecido.

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}

Não consigo encontrar esses guids no local do registro no Windows 8, o MS os move para outro lugar?
Vincent,

@Vincent Esses GUIDs são armazenados nos arquivos executáveis ​​do Visual Studio e produtos relacionados em algum lugar, eu acho.
Athari

3
@Vincent: No Windows de 64 bits, os GUIDs do tipo de projeto são armazenados na chave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\<version>\Projects.
Andreas Bilger

Há uma lista bastante completa de projecttypeguids disponíveis aqui: codeproject.com/Reference/720512/…
Frederik Struck-Schøning

12

Um tópico no msdn já foi iniciado e muito foi discutido por aí. Se alguém estiver interessado em saber sobre isso, verifique Qual é o significado da tag ProjectTypeGuids no arquivo de projeto do Visual Studio

ProjectTypeGuids é usado pelo Visual Studio para agregação de projeto. Em seu exemplo, você tem um projeto C # WPF (representado por 60dc8134-eba5-43b8-bcc9-bb4bc16c2548 ) (representado por FAE04EC0-301F-11D3-BF4B-00C04F79EFBC ).

Se você tiver um tipo de projeto personalizado trabalhando com .xaml e .cs, você deve tentar adicionar seu guid de projeto personalizado (especificado pelo GUID de fábrica do seu projeto) como abaixo:

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


2
É triste que em nenhum lugar (incluindo as páginas compartilhadas por você) explique claramente por que os guias de projeto são necessários. Alguém da MS explicou na página que você compartilhou que os guias de projeto são apenas para agregação de projeto. O que isso significa? Quem sabe.
Cary de
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.