SLN文件中的GUID

Fly*_*wat 13 .net solution visual-studio

Visual Studio解决方案文件包含每个项目条目两个GUID.我认为其中一个来自AssemblyInfo.cs

有谁知道这些来自哪里,以及它们用于什么?

Jas*_*son 14

GUID与AssemblyInfo.cs中的GUID不同(这是程序集本身的GUID,不依赖于Visual Studio,而是构建的最终产品).

因此,对于sln文件中的典型行(如果您希望看到此内容,请在记事本或编辑选项中打开.sln):

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleSandbox", "ConsoleSandbox\ConsoleSandbox.csproj", "{55A1FD06-FB00-4F8A-9153-C432357F5CAC}"
Run Code Online (Sandbox Code Playgroud)

第二个GUID是项目本身的唯一GUID.解决方案文件使用它将其他设置映射到该项目:

GlobalSection(ProjectConfigurationPlatforms) = postSolution
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
    {55A1FD06-FB00-4F8A-9153-C432357F5CAC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
Run Code Online (Sandbox Code Playgroud)

第一个GUID实际上是一个GUID,它是解决方案本身的唯一GUID(我相信).如果您有一个包含多个项目的解决方案,您实际上会看到以下内容:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleSandbox", "ConsoleSandbox\ConsoleSandbox.csproj", "{55A1FD06-FB00-4F8A-9153-C432357F5CAC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Composite", "..\CompositeWPF\Source\CAL\Composite\Composite.csproj", "{77138947-1D13-4E22-AEE0-5D0DD046CA34}"
EndProject
Run Code Online (Sandbox Code Playgroud)

  • 第一个GUID标识项目类型,如(简要)在此处提到的 - http://msdn.microsoft.com/en-us/library/bb165951(v=vs.90).aspx.另请参阅http://www.mztools.com/Articles/2008/MZ2008017.aspx以获取项目类型列表.(我仍然想知道解决方案文件夹是否有特殊的guid ......) (5认同)
  • 感谢您的链接@yoyo。文件夹 GUID 似乎是 {2150E333-8FDC-42A3-9474-1A3956D46DE8}。 (2认同)

Sho*_*og9 6

根据MSDN:

[ Project]语句包含唯一项目GUID和项目类型GUID.环境使用此信息来查找属于解决方案的项目文件或文件,以及每个项目所需的VSPackage.项目GUID传递给IVsProjectFactory以加载与项目相关的特定VSPackage,然后由VSPackage加载项目.