`dotnet sln add` 错误的项目类型 GUID

`dotnet sln add` wrong project type GUID

当我为 .NET Core/Standard 项目执行 dotnet sln add {myProject.csproj} 时,它会将其添加为项目类型(我认为){FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 而不是 .NET Core 的 {9A19103F-16F7-4668-BE54-9A1E7A4F7556}

因此,当我在 Visual Studio 中打开解决方案时,它会抱怨并将 csproj“升级”为 .NET Framework csproj,不是 .NET Core 的。我可以手动编辑 sln,但这很麻烦。

我是不是做错了什么?有我遗漏的参数吗?

CLI 实际上在这里做了正确的事情,这是一个 VS/Project 系统错误。

CLI 调用 msbuild 以获取要使用的默认项目类型 GUID。 MSBuild 将 C# 的 $(DefaultProjectTypeGuid) 和 VB 项目设置为 "classic",以允许 CLI 将 "classic" 和 "SDK-style" 项目添加到解决方案中。

经典 GUID (FAE04EC0…) 然后触发选择逻辑,查看项目中是否设置了 TargetFrameworkTargetFrameworks 以确定 "new" 或"classic" 将使用项目系统。想法是在某个时候只使用新的项目系统,经典的项目系统可能在未来的某个更新中不再是VS的一部分(这是GitHub上很多评论的基调)。

According to the logged GitHub issue, the bug is that when the new project system is elected, the solution is updated to the "new" GUID which VS/the solution shouldn't see.