2008-09-09 70 views
12

Visual Studio解决方案文件包含每个项目条目的两个GUID。我想他们其中之一是从AssemblyInfo.csSLN文件中的GUID

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

+0

任何最终的解决方案与完整的源代码示例工作呢? – Kiquenet 2013-12-03 11:35:12

回答

13

GUID与AssemblyInfo.cs(即装配本身的GUID,不与Visual Studio绑定,但是构建的最终产品)是相同的GUID。

所以,在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 
+0

任何解析在C#sln文件?这是一个可惜sln文件不是XML格式。 @JasonOlson – Kiquenet 2013-12-03 11:35:39

6

According to MSDN

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