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

标签 visual-studio msbuild .net-core dotnet-cli sln-file

当我这样做时 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… ) 会触发一个选择逻辑,该逻辑看起来是 TargetFrameworkTargetFrameworks在项目中设置以确定是否将使用"new"或“经典”项目系统。这个想法是在某个时候只使用新的项目系统,经典的项目系统在 future 的一些更新中可能不再是 VS 的一部分(这是 GitHub 上很多评论的基调)。

根据 the logged GitHub issue ,错误是当新的项目系统被选中时,解决方案更新为VS/解决方案不应该看到的"new"GUID。

关于visual-studio - `dotnet sln add` 错误的项目类型 GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47312163/

相关文章:

c++ - 通过 msbuild exec 在 C++ 中对控制台输出进行颜色处理

c++ - try-catch block 可以在 LLVM/MSVC 上编译吗?

c# - 删除充满文件的文件夹不会立即释放空间

c# - EFCore 迁移是否应该致力于版本控制?

visual-studio - Visual Studio 2015 中缺少 SSDT(SQL Server Data Tools)

c# - 自动格式化自动属性时忽略空格

visual-studio - 谁是诺亚·理查兹(Noah Richards),他与VS2010崩溃有什么关系?

c++ - WM_DESTROY消息困惑

替换之前的 MSBuild 备份文件(带时间戳)

asp.net-mvc - Swagger 没有为 IActionResult 包装的对象生成模型