当我这样做时 dotnet sln add {myProject.csproj}
对于 .NET Core/Standard 项目,它将其添加为项目类型(我认为){FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
而不是 .NET Core 的 {9A19103F-16F7-4668-BE54-9A1E7A4F7556}
.
因此,当我在 Visual Studio 中打开解决方案时,它会提示并“升级”csproj
到 .NET 框架 csproj
,不是 .NET Core 的。我可以手动编辑 sln
但这是件苦差事。
难道我做错了什么?有我遗漏的论据吗?
最佳答案
CLI 在这里实际上是在做正确的事情,这是一个 VS/项目系统错误。
CLI 调用 msbuild 以获取要使用的默认项目类型 GUID。 MSBuild 设置 $(DefaultProjectTypeGuid)
将 C# 和 VB 项目转换为“经典”项目,以允许 CLI 将“经典”和“SDK 风格”项目添加到解决方案中。
然后,经典的 GUID ( FAE04EC0…
) 会触发一个选择逻辑,该逻辑看起来是 TargetFramework
或 TargetFrameworks
在项目中设置以确定是否将使用"new"或“经典”项目系统。这个想法是在某个时候只使用新的项目系统,经典的项目系统在 future 的一些更新中可能不再是 VS 的一部分(这是 GitHub 上很多评论的基调)。
根据 the logged GitHub issue ,错误是当新的项目系统被选中时,解决方案更新为VS/解决方案不应该看到的"new"GUID。
关于visual-studio - `dotnet sln add` 错误的项目类型 GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47312163/