在Visual Studio解决方案文件中,项目GUID用于什么?

89

我在一个单一的Visual Studio(2008)解决方案中有多个项目。
我刚刚发现这些项目都使用相同的GUID,在解决方案文件中看起来像这样:

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

我是否需要更改这些GUID使它们唯一,它们有什么用途?


1
两个 csproj 文件中的 <ProjectGuid> 是否匹配? - Ryu
@Ryu 如果是的话,这意味着什么? - Wakan Tanka
5个回答

94

解决方案文件中的项目持久化块具有以下格式:

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

首个GUID不唯一,它唯一标识处理此类型项目的Visual Studio包。

您发布的GUID很有意思 - 它看起来像是C#项目GUID,可能被篡改了。你自己改变过它还是发帖时出了问题(例如你使用从右到左书写的语言环境,如希伯来语或阿拉伯语)。


4
非常感谢,Oleg!我自己更改了GUID,因为我认为每个解决方案应该是唯一的。我没有比反转其中一些值更好的想法,当然也没有想到它会成为C#项目中的普遍值 :-) - Marc
2
解决方案(sln文件)没有GUID,是吗?只有项目csproj有GUID。 - Kiquenet
10
现在有人已经为我们记下了它们:http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs - Ramsey
已知的 GUID 列表:https://www.mztools.com/Articles/2008/MZ2008017.aspx - Lin Song Yang
看起来像是有效的 GUID,且GUID已被定义。这个回答实际上没有回答任何问题,但也发布了无效的评论。 - Nick Turner
显示剩余3条评论

38

第一个 GUID 是项目类型。可以在这里找到项目类型的 GUID 列表:

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

从链接中得知:


在 Visual Studio 中创建项目后,很难轻松地更改项目类型;例如将 C# 类库更改为可移植类库(PCL)。了解这些 GUID 将允许您编辑项目文件,如 .csproj 和 .vbproj,在可视化界面无法使用时轻松更改项目类型。

按描述/项目类型:

+------------------------------------------------+----------------------------------------+
|                  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} |
+------------------------------------------------+----------------------------------------+

按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} |
+------------------------------------------------+----------------------------------------+

注意:您将在项目文件中找到这些属性作为<ProjectTypeGuids>元素,不要将其与<ProjectGuid>混淆,后者是项目的唯一标识符。

某些 GUID 会结合使用。例如,<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 描述了一个使用 C# 编写的 Xamarin.Android 库。


2
此外,您还可以在注册表中本地查找项目类型 GUID,路径为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\Projects - Ivan Leonenko
@IvanLeonenko 刚刚检查了一下,似乎我不再拥有那个注册表键了,不知道位置是否已更改或其他原因。 - mgrandi
1
尝试访问32位注册表键 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\Projects - Ivan Leonenko
希望能有一个官方链接指向这些指南。 - Nick Turner
我有一个快速的问题,如果项目类型的GUID从C#更改为.NET Core,这会有什么区别吗?比如说,如果Visual Studio自动完成这个更改的话? - d0rf47

26

我经常会复制一个VS项目文件,重命名并搜索替换所有出现的项目名称,以创建一个具有相同设置的新项目。这通常比创建一个新项目然后确保所有设置正确要快得多。我忽略GUID。在将项目添加到解决方案后保存项目后,VS将更改GUID。

我进行了大量DLL/C/C++开发,并且多年来我已经偏离了标准项目设置(特别是涉及优化、代码生成等方面),我发现复制技术是一种更快、更可靠的设置项目的方法。


4
谢谢。编辑XML文件比记住要点击哪里,打开哪个菜单等要容易得多。文本文件比图形用户界面的操作更加可重复。 - Bram
2
您可以通过项目属性表来解决大部分问题。将所有的优化/代码生成等都放在其中,然后在每个项目中包含这些表即可。 - Mark Ingram
是的,你说得对。一旦将项目添加到解决方案中,如果GUID与解决方案中的另一个项目相同,则会更改GUID。如果您正在从Git子模块添加项目,则会导致烦人的问题(您不希望更改该项目),那么在这种情况下该怎么办呢? - serup

5

csproj文件中的项目GUID应该是唯一的。根据我的经验,如果在同一个解决方案中包含两个csproj文件,则Visual Studio会自动重新生成其中一个GUID。


1
Visual Studio和Sharpdevelop都可以为您完成此操作。只需注意,如果引用了GUID更改的项目,则其他解决方案中引用修改后的项目的sln文件和其他项目文件将使用旧的GUID,这将破坏项目引用。这很容易修复,但值得记住。还值得知道的是,VS可能会更改先前存在的项目的GUID。 - andyhasit
有两个 GUID。一个是项目的 ID,另一个是 VS 枚举 GUID。 - Nick Turner

1
提示:如果你正在制作一个XBOX360 XNA 4.0项目并尝试使用这个技巧,请不要使用由VS 2012生成的guid。在VS2010中生成一个然后使用它。
否则,当您尝试在XNA Game Studio Connect中运行重新指定guid的项目时,将会出现以下错误:
“此游戏丢失或损坏,blah blah blah,重新启动XNA Game Studio Connect?”
然后它就会崩溃。 VS 2010 guids可以正常工作。我不知道为什么。

1
更普遍地说,在进一步测试后,Visual Studio 2012中的重命名本身就非常糟糕。我建议使用2010或2013来进行这些功能。 - twobob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接