添加与添加的项目无关的现有项目时,Visual Studio .sln 发生更改

问题描述 投票:0回答:1

当我将现有项目添加到我的解决方案中时,Visual Studio 会更改 sln 文件中与其他项目相关的行。

例如,我将

MyProjectE
添加到我之前已经存在的解决方案中。

之前:

...
MinimumVisualStudioVersion = 10.0.408219.2
Project("{FE45H815-301F-11D3-BF4B-01JG812DI512}") = "MyProjectA", "MyProjectA\MyProjectA.csproj", "{5E1498BF-4BFA-65DB-B7B8-884JK349JK21}"
EndProject
Project("{FE45H815-301F-11D3-BF4B-01JG812DI512}") = "MyProjectB", "MyProjectB\MyProjectB.csproj", "{E1D124F0-AB44-4145-8997-24F2B7C249B8}"
EndProject
Project("{FE45H815-301F-11D3-BF4B-01JG812DI512}") = "MyProjectC", "MyProjectC\MyProjectC.csproj", "{420DJKLA-7D92-4ED2-B18A-7F92123SR920}"
EndProject
Project("{FE45H815-301F-11D3-BF4B-01JG812DI512}") = "MyProjectD", "MyProjectD\MyProjectD.csproj", "{E1D124F0-295C-44BE-8A56-C3050AB49E4E}"
EndProject
Global
...

之后:

...
MinimumVisualStudioVersion = 10.0.408219.2
Project("{89F231D1-16F7-4668-BE54-9A1E7A4F7556}") = "MyProjectA", "MyProjectA\MyProjectA.csproj", "{5E1498BF-4BFA-65DB-B7B8-884JK349JK21}"
EndProject
Project("{89F231D1-16F7-4668-BE54-9A1E7A4F7556}") = "MyProjectB", "MyProjectB\MyProjectB.csproj", "{E1D124F0-AB44-4145-8997-24F2B7C249B8}"
EndProject
Project("{FE45H815-301F-11D3-BF4B-01JG812DI512}") = "MyProjectC", "MyProjectC\MyProjectC.csproj", "{420DJKLA-7D92-4ED2-B18A-7F92123SR920}"
EndProject
Project("{FE45H815-301F-11D3-BF4B-01JG812DI512}") = "MyProjectD", "MyProjectD\MyProjectD.csproj", "{E1D124F0-295C-44BE-8A56-C3050AB49E4E}"
EndProject
Project("{89F231D1-16F7-4668-BE54-9A1E7A4F7556}") = "MyProjectE", "MyProjectE\MyProjectE.csproj", "{28BEA2B4-42DC-4F84-843B-5070AD9AE335}"
EndProject
Global
...

发生的情况是,新项目的引用添加在底部,这完全没问题。但是,正如您在前两行中看到的,

MyProjectA
MyProjectB
的第一个“ID”更改为:

项目(“{FE45H815-301F-11D3-BF4B-01JG812DI512}”)=“MyProjectA”...

至:

项目(“{89F231D1-16F7-4668-BE54-9A1E7A4F7556}”)=“MyProjectA”...

官方文档每行调用两个ID

唯一的项目 GUID 和项目类型 GUID。

但是我不确定,由于这个堆栈溢出答案,在我的问题中更改的 GUID 是项目 GUID 还是项目类型 GUID。

所以我的问题是,改变的值到底是什么,可能是什么原因,为什么值改变,以及我是否需要采取任何行动,因为我不确定,是否必须在我的提交中添加这些更改。

提前致谢:)

c# visual-studio visual-studio-2022 sln-file
1个回答
0
投票

项目文件中更改的值是项目类型 GUID。

紧随项目后面的大括号 {} 中的 GUID 是项目类型 GUID。

Visual Studio 可能检测到新添加的项目 (MyProjectE) 的项目类型或模板不同,从而导致分配不同的项目类型 GUID。

项目结构、配置或设置的更改可能会触发项目类型 GUID 的重新分配。

对 Visual Studio 或其项目管理系统进行的更新或修改可能导致了这一变化。

我发现了类似的帖子

here
。它可能对你有帮助。

CLI 调用 msbuild 以获取默认项目类型 GUID 使用。 MSBuild 为 C# 和 VB 项目设置 $(DefaultProjectTypeGuid) 到“经典”,以允许 CLI 添加“经典”和 “SDK 式”项目到解决方案。

经典的 GUID (FAE04EC0…) 然后触发一个选择逻辑 查看项目中是否将 TargetFramework 或 TargetFrameworks 设置为 确定是否使用“新”或“经典”项目系统。这 想法是在某个时候只会使用新的项目系统 并且经典的项目系统在某些方面可能不再是 VS 的一部分 未来的更新(这是 GitHub 上很多评论的语气)。

© www.soinside.com 2019 - 2024. All rights reserved.