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

Dan*_*ite 6 msbuild visual-studio sln-file .net-core dotnet-cli

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

因此,当我在 Visual Studio 中打开解决方案时,它会抱怨并“升级”csproj到 .NET Framework csproj,而不是 .NET Core 。我可以手动编辑,sln但这是一件苦差事。

难道我做错了什么?有我遗漏的论据吗?

Mar*_*ich 6

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

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

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

根据记录的GitHub问题,错误是在选择新项目系统时,解决方案更新为VS /解决方案不应该看到的“新” GUID。