SLN文件中的GUID

时间:2008-09-09 22:23:37

标签: .net visual-studio solution

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

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

2 个答案:

答案 0 :(得分: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}"

第二个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

第一个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

答案 1 :(得分:6)

According to MSDN

  

[Project]语句包含   唯一项目GUID和项目   键入GUID。此信息用于   找到项目的环境   属于的文件或文件   解决方案,以及所需的VSPackage   对于每个项目。项目GUID是   传递给IVsProjectFactory加载   与之相关的特定VSPackage   项目,然后项目加载   VSPackage。