87

I have multiple projects in a single Visual Studio (2008) solution.
I just discovered that each of these projects uses a same GUID, so in the solution file it looks like this:

Project("{FAE04EC0-F103-D311-BF4B-00C04FCBFE97}") = "Pro1", "Pro1\Pro1.csproj", "{...}"
Project("{FAE04EC0-F103-D311-BF4B-00C04FCBFE97}") = "Pro2", "Pro2\Pro2.csproj", "{...}"

Do I have to change these GUIDs so they're unique and what are they used for?

Marc
  • 9,012
  • 13
  • 57
  • 72

5 Answers5

94

Project persistence block in a solution file has the following format:

Project("{project type GUID}") = "<Project name>", "<project file location>", 
    "{<Unique project GUID>}"
EndProject

So it's expected that first GUID is non-unique, it uniquely identifies Visual Studio package that handles this type of projects.

The GUID you posted is interesting - it looks like mangled C# project GUID, which is FAE04EC0-301F-11D3-BF4B-00C04F79EFBC. Did you change it yourself or is it a posting issue (e.g. you are using right-to-left locale such as Hebrew or Arabic).

Oleg Tkachenko
  • 2,716
  • 18
  • 8
  • 4
    Thanks a lot Oleg! I changed the GUID myself because I thought it would be unique per solution or so. I didn't have any better idea than reversing some of its values and certainly didn't think that it would be a common value for C# projects :-) – Marc Feb 25 '10 at 08:43
  • 2
    Solution (sln file) hasn't GUID, isn't? Only projects csproj has GUID – Kiquenet Sep 04 '13 at 07:15
  • 10
    @Seth Now someone has memorized them for us: http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs – Ramsey Nov 27 '15 at 11:40
  • can people hack my computer using that GUID if that comes from my computer to github with a project push? – huseyin tugrul buyukisik Apr 01 '17 at 00:14
  • @Ramsey: A good link, Cheers!. Though not an example of memorization :) but I guess having it chiseled on a codeproject tablet will hopefully stand the test of time or until MS decides to gives us a new set :). – Patrick D'Souza May 04 '17 at 09:15
  • https://www.mztools.com/Articles/2008/MZ2008017.aspx known list of GUIDs – Lin Song Yang Aug 08 '18 at 03:24
  • That looks like a valid guid and the GUID is defined. This answer doesn't actually answer anything, but also puts invalid comments – Nick Turner Jan 07 '22 at 13:28
  • This should not be the answer – Nick Turner Jan 07 '22 at 13:28
36

The first GUID is the project type. Project type GUIDs can be found here:

http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs

From the link:


There isn't an easy way to change the type of a project in Visual Studio project once it is created; for example changing a C# Class Library into a Portable Class Library (PCL). Knowing these GUIDs will allow you to edit project files like .csproj and .vbproj to easily change a project type in cases where Visual Studio will not allow using the GUI.

By description/project type:

+------------------------------------------------+----------------------------------------+
|                  Project Type                  |                 GUID        
+------------------------------------------------+----------------------------------------+
| .NET Core                                      | {9A19103F-16F7-4668-BE54-9A1E7A4F7556} |
| ASP.NET 5                                      | {8BB2217D-0F2D-49D1-97BC-3654ED321F3B} |
| ASP.NET MVC 1                                  | {603C0E0B-DB56-11DC-BE95-000D561079B0} |
| ASP.NET MVC 2                                  | {F85E285D-A4E0-4152-9332-AB1D724D3325} |
| ASP.NET MVC 3                                  | {E53F8FEA-EAE0-44A6-8774-FFD645390401} |
| ASP.NET MVC 4                                  | {E3E379DF-F4C6-4180-9B81-6769533ABE47} |
| ASP.NET MVC 5                                  | {349C5851-65DF-11DA-9384-00065B846F21} |
| C#                                             | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} |
| C++                                            | {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} |
| Database                                       | {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124} |
| Database (other project types)                 | {4F174C21-8C12-11D0-8340-0000F80270F8} |
| Deployment Cab                                 | {3EA9E505-35AC-4774-B492-AD1749C4943A} |
| Deployment Merge Module                        | {06A35CCD-C46D-44D5-987B-CF40FF872267} |
| Deployment Setup                               | {978C614F-708E-4E1A-B201-565925725DBA} |
| Deployment Smart Device Cab                    | {AB322303-2255-48EF-A496-5904EB18DA55} |
| Distributed System                             | {F135691A-BF7E-435D-8960-F99683D2D49C} |
| Dynamics 2012 AX C# in AOT                     | {BF6F8E12-879D-49E7-ADF0-5503146B24B8} |
| F#                                             | {F2A71F9B-5D33-465A-A702-920D77279786} |
| J#                                             | {E6FDF86B-F3D1-11D4-8576-0002A516ECE8} |
| Legacy (2003) Smart Device (C#)                | {20D4826A-C6FA-45DB-90F4-C717570B9F32} |
| Legacy (2003) Smart Device (VB.NET)            | {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8} |
| Micro Framework                                | {b69e3092-b931-443c-abe7-7e7b65f2a37f} |
| Model-View-Controller v2 (MVC 2)               | {F85E285D-A4E0-4152-9332-AB1D724D3325} |
| Model-View-Controller v3 (MVC 3)               | {E53F8FEA-EAE0-44A6-8774-FFD645390401} |
| Model-View-Controller v4 (MVC 4)               | {E3E379DF-F4C6-4180-9B81-6769533ABE47} |
| Model-View-Controller v5 (MVC 5)               | {349C5851-65DF-11DA-9384-00065B846F21} |
| Mono for Android                               | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF} |
| MonoTouch                                      | {6BC8ED88-2882-458C-8E55-DFD12B67127B} |
| MonoTouch Binding                              | {F5B4F3BC-B597-4E2B-B552-EF5D8A32436F} |
| Portable Class Library                         | {786C830F-07A1-408B-BD7F-6EE04809D6DB} |
| Project Folders                                | {66A26720-8FB5-11D2-AA7E-00C04F688DDE} |
| Service Fabric Application (.sfproj)           | {A07B5EB6-E848-4116-A8D0-A826331D98C6} |
| SharePoint (C#)                                | {593B0543-81F6-4436-BA1E-4747859CAAE2} |
| SharePoint (VB.NET)                            | {EC05E597-79D4-47f3-ADA0-324C4F7C7484} |
| SharePoint Workflow                            | {F8810EC1-6754-47FC-A15F-DFABD2E3FA90} |
| Silverlight                                    | {A1591282-1198-4647-A2B1-27E5FF5F6F3B} |
| Smart Device (C#)                              | {4D628B5B-2FBC-4AA6-8C16-197242AEB884} |
| Smart Device (VB.NET)                          | {68B1623D-7FB9-47D8-8664-7ECEA3297D4F} |
| Solution Folder                                | {2150E333-8FDC-42A3-9474-1A3956D46DE8} |
| Test                                           | {3AC096D0-A1C2-E12C-1390-A8335801FDAB} |
| Universal Windows Class Library                | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A} |
| VB.NET                                         | {F184B08F-C81C-45F6-A57F-5ABD9991F28F} |
| Visual Database Tools                          | {C252FEB5-A946-4202-B1D4-9916A0590387} |
| Visual Studio 2015 Installer Project Extension | {54435603-DBB4-11D2-8724-00A0C9A8B90C} |
| Visual Studio Tools for Applications (VSTA)    | {A860303F-1F3F-4691-B57E-529FC101A107} |
| Visual Studio Tools for Office (VSTO)          | {BAA0C2D2-18E2-41B9-852F-F413020CAA33} |
| Web Application                                | {349C5851-65DF-11DA-9384-00065B846F21} |
| Web Site                                       | {E24C65DC-7377-472B-9ABA-BC803B73C61A} |
| Windows (C#)                                   | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} |
| Windows (VB.NET)                               | {F184B08F-C81C-45F6-A57F-5ABD9991F28F} |
| Windows (Visual C++)                           | {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} |
| Windows Communication Foundation (WCF)         | {3D9AD99F-2412-4246-B90B-4EAA41C64699} |
| Windows Phone 8/8.1 Blank/Hub/Webview App      | {76F1466A-8B6D-4E39-A767-685A06062A39} |
| Windows Phone 8/8.1 App (C#)                   | {C089C8C0-30E0-4E22-80C0-CE093F111A43} |
| Windows Phone 8/8.1 App (VB.NET)               | {DB03555F-0C8B-43BE-9FF9-57896B3C5E56} |
| Windows Presentation Foundation (WPF)          | {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548} |
| Windows Store (Metro) Apps & Components        | {BC8A1FFA-BEE3-4634-8014-F334798102B3} |
| Workflow (C#)                                  | {14822709-B5A1-4724-98CA-57A101D1B079} |
| Workflow (VB.NET)                              | {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8} |
| Workflow Foundation                            | {32F31D43-81CC-4C15-9DE6-3FC5453562B6} |
| Xamarin.Android                                | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF} |
| Xamarin.iOS                                    | {6BC8ED88-2882-458C-8E55-DFD12B67127B} |
| XNA (Windows)                                  | {6D335F3A-9D43-41b4-9D22-F6F17C4BE596} |
| XNA (XBox)                                     | {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2} |
| XNA (Zune)                                     | {D399B71A-8929-442a-A9AC-8BEC78BB2433} |
+------------------------------------------------+----------------------------------------+

By GUID:

+------------------------------------------------+----------------------------------------+
|                  Project Type                  |                 GUID  
+------------------------------------------------+----------------------------------------+
| Deployment Merge Module                        | {06A35CCD-C46D-44D5-987B-CF40FF872267} |
| Workflow (C#)                                  | {14822709-B5A1-4724-98CA-57A101D1B079} |
| Legacy (2003) Smart Device (C#)                | {20D4826A-C6FA-45DB-90F4-C717570B9F32} |
| Solution Folder                                | {2150E333-8FDC-42A3-9474-1A3956D46DE8} |
| XNA (XBox)                                     | {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2} |
| Workflow Foundation                            | {32F31D43-81CC-4C15-9DE6-3FC5453562B6} |
| Web Application (incl. MVC 5)                  | {349C5851-65DF-11DA-9384-00065B846F21} |
| Test                                           | {3AC096D0-A1C2-E12C-1390-A8335801FDAB} |
| Windows Communication Foundation (WCF)         | {3D9AD99F-2412-4246-B90B-4EAA41C64699} |
| Deployment Cab                                 | {3EA9E505-35AC-4774-B492-AD1749C4943A} |
| Smart Device (C#)                              | {4D628B5B-2FBC-4AA6-8C16-197242AEB884} |
| Database (other project types)                 | {4F174C21-8C12-11D0-8340-0000F80270F8} |
| Visual Studio 2015 Installer Project Extension | {54435603-DBB4-11D2-8724-00A0C9A8B90C} |
| SharePoint (C#)                                | {593B0543-81F6-4436-BA1E-4747859CAAE2} |
| ASP.NET MVC 1.0                                | {603C0E0B-DB56-11DC-BE95-000D561079B0} |
| Windows Presentation Foundation (WPF)          | {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548} |
| Smart Device (VB.NET)                          | {68B1623D-7FB9-47D8-8664-7ECEA3297D4F} |
| Project Folders                                | {66A26720-8FB5-11D2-AA7E-00C04F688DDE} |
| MonoTouch                                      | {6BC8ED88-2882-458C-8E55-DFD12B67127B} |
| XNA (Windows)                                  | {6D335F3A-9D43-41b4-9D22-F6F17C4BE596} |
| Windows Phone 8/8.1 Blank/Hub/Webview App      | {76F1466A-8B6D-4E39-A767-685A06062A39} |
| Portable Class Library                         | {786C830F-07A1-408B-BD7F-6EE04809D6DB} |
| ASP.NET 5                                      | {8BB2217D-0F2D-49D1-97BC-3654ED321F3B} |
| C++                                            | {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} |
| Deployment Setup                               | {978C614F-708E-4E1A-B201-565925725DBA} |
| .NET Core                                      | {9A19103F-16F7-4668-BE54-9A1E7A4F7556} |
| Service Fabric Application (.sfproj)           | {A07B5EB6-E848-4116-A8D0-A826331D98C6} |
| Silverlight                                    | {A1591282-1198-4647-A2B1-27E5FF5F6F3B} |
| Universal Windows Class Library                | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A} |
| Visual Studio Tools for Applications (VSTA)    | {A860303F-1F3F-4691-B57E-529FC101A107} |
| Database                                       | {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124} |
| Deployment Smart Device Cab                    | {AB322303-2255-48EF-A496-5904EB18DA55} |
| Micro Framework                                | {B69E3092-B931-443C-ABE7-7E7B65F2A37F} |
| Visual Studio Tools for Office (VSTO)          | {BAA0C2D2-18E2-41B9-852F-F413020CAA33} |
| Windows Store Apps (Metro Apps)                | {BC8A1FFA-BEE3-4634-8014-F334798102B3} |
| C# in Dynamics 2012 AX AOT                     | {BF6F8E12-879D-49E7-ADF0-5503146B24B8} |
| Windows Phone 8/8.1 App (C#)                   | {C089C8C0-30E0-4E22-80C0-CE093F111A43} |
| Visual Database Tools                          | {C252FEB5-A946-4202-B1D4-9916A0590387} |
| Legacy (2003) Smart Device (VB.NET)            | {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8} |
| XNA (Zune)                                     | {D399B71A-8929-442a-A9AC-8BEC78BB2433} |
| Workflow (VB.NET)                              | {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8} |
| Windows Phone 8/8.1 App (VB.NET)               | {DB03555F-0C8B-43BE-9FF9-57896B3C5E56} |
| Web Site                                       | {E24C65DC-7377-472B-9ABA-BC803B73C61A} |
| ASP.NET MVC 4.0                                | {E3E379DF-F4C6-4180-9B81-6769533ABE47} |
| ASP.NET MVC 3.0                                | {E53F8FEA-EAE0-44A6-8774-FFD645390401} |
| J#                                             | {E6FDF86B-F3D1-11D4-8576-0002A516ECE8} |
| SharePoint (VB.NET)                            | {EC05E597-79D4-47f3-ADA0-324C4F7C7484} |
| Xamarin.Android / Mono for Android             | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF} |
| Distributed System                             | {F135691A-BF7E-435D-8960-F99683D2D49C} |
| VB.NET                                         | {F184B08F-C81C-45F6-A57F-5ABD9991F28F} |
| F#                                             | {F2A71F9B-5D33-465A-A702-920D77279786} |
| MonoTouch Binding                              | {F5B4F3BC-B597-4E2B-B552-EF5D8A32436F} |
| ASP.NET MVC 2.0                                | {F85E285D-A4E0-4152-9332-AB1D724D3325} |
| SharePoint Workflow                            | {F8810EC1-6754-47FC-A15F-DFABD2E3FA90} |
| C#                                             | {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} |
+------------------------------------------------+----------------------------------------+

Notes: You will find these properties as a <ProjectTypeGuids> element in the project file, not to be confused with <ProjectGuid> which is a unique identifier for your project.

Some GUIDs are used in combination. For example, <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> describes a Xamarin.Android library in C#.

mgrandi
  • 3,389
  • 1
  • 18
  • 17
Steve Sheldon
  • 6,421
  • 3
  • 31
  • 35
  • 2
    Also you can find project type GUIDs locally in registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\Projects` – Ivan Leonenko Jan 04 '19 at 19:37
  • @IvanLeonenko just checked and i don't seem to have that registry key anymore, dunno if that location has changed or what – mgrandi Jul 02 '21 at 02:03
  • Try 32 bit registry key `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\Projects` – Ivan Leonenko Jul 02 '21 at 02:27
  • Would have been nice for an official link to the guids – Nick Turner Jan 07 '22 at 13:26
  • I have a quick question, if the project type GUID changes from C# to .net core does this make a difference? like if VS does it automatically? – d0rf47 Jun 27 '23 at 17:09
26

I will often copy a VS project file, rename it and search and replace all occurrences of the project name to create a new project with same settings. This is often quicker than creating a new project and then ensuring all the settings are correct. I ignore the GUID. VS will change the GUID as soon as I save the project after adding it to solution.

I do a lot of DLL/C/C++ development and I have deviated from the standard project settings extensively over the years (particularly in regard to optimization, code generation etc) and I find the copy technique a quicker, surer way of setting up a project.

Tim Ring
  • 1,845
  • 1
  • 20
  • 27
  • 4
    Thanks. Editing an XML file is so much easier than remembering where to click, and what menu to open, etc. Text files are much more repeatable than GUI actions. – Bram Oct 13 '13 at 05:36
  • 2
    You can solve most of that with Project Property Sheets. Put all your optimization / code generation etc in there, then include the sheets in each project. – Mark Ingram Apr 06 '16 at 12:10
  • yes you are right, the second you add a project to a solution then it changes the guid if the guid is the same as another project in the solution -- this causes annoying issues if you are adding a project from a git submodule (you do NOT want to change that project), so what to do in that case ? – serup Jan 23 '19 at 06:52
5

The project guids in the csproj file should be unique. From my experience if two csproj files are included in the same solution visual studio automatically regenerates one of the guids.

Ryu
  • 8,641
  • 10
  • 65
  • 98
  • 1
    Both VS and Sharpdevelop do this for you. Just be aware of the implications if the project who's GUID got changed is referenced by another solution elsewhere. The other solution's sln file and other project files which reference the modified project will use the old GUID and this will break project references. Easily fixed but worth bearing in mind. Also worth knowing that VS might well change the GUID of the project that was there first. – andyhasit Sep 13 '13 at 23:17
  • There are 2 guids. The Id for the project and the VS enum guid – Nick Turner Jan 07 '22 at 13:45
1

Word to the wise: If making an XBOX360 XNA 4.0 project and trying this trick, Don't use a guid generated by VS 2012. generate one in VS2010 and use that.

Or you will get the following error when you try to run your re-guid'ed project in XNA Game Studio Connect.

"This game is missing or corrupt, blah blah blah, restart XNA Game Studio Connect?"

and then it will bomb. VS 2010 guids work fine. I have no idea why.

twobob
  • 354
  • 8
  • 22
  • 1
    More generally, having testing further, the renaming per se in Visual Studio 2012 is horribly broken. I would use 2010 or 2013 for these functions. – twobob Jul 01 '14 at 15:50