16

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

有谁确切地知道这些来自哪里,以及它们的用途?

4

2 回答 2

15

这两个 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
于 2008-09-09T22:29:22.287 回答
6

根据 MSDN

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

于 2008-09-09T22:28:44.080 回答