Visual Studio `dotnet sln add`项目类型错误

xlpyo6sf  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(117)

当我为.NET Core/Standard项目执行dotnet sln add {myProject.csproj}时,它将其添加为项目类型(我认为){FAE04EC0-301F-11D3-BF4B-00C04F79EFBC},而不是.NET Core的{9A19103F-16F7-4668-BE54-9A1E7A4F7556}
因此,当我在Visual Studio中打开解决方案时,它会抱怨并将csproj“升级”为.NET Frameworkcsproj,而不是.NET Core。我可以手动编辑sln,但这是一件苦差事。
我做错了什么吗?我错过了什么论据吗?

fcg9iug3

fcg9iug31#

CLI实际上在这里做了正确的事情,这是一个VS/Project系统错误。
CLI调用msbuild以获取要使用的默认项目类型XNUMX。MSBuild将C#和VB项目的$(DefaultProjectTypeGuid)设置为“经典”项目,以允许CLI将“经典”和“SDK风格”项目添加到解决方案中。
经典之作(FAE04EC0…)然后触发一个选择逻辑,该逻辑查看项目中是否设置了TargetFrameworkTargetFrameworks,以确定是否将使用“新”或“经典”项目系统。(这是GitHub上很多评论的语气)。
根据the logged GitHub issue,这个bug是当新的项目系统被选中时,解决方案被更新为VS/the solution不应该看到的“新”文件。

vlurs2pr

vlurs2pr2#

对于任何来到这里试图了解如何以及何时在较新的SDK风格的项目系统中打开旧版.csproj xpls的人,本文概述了Visual Studio用于确定使用哪个项目系统来加载项目的启发式方法:
https://github.com/dotnet/project-system/blob/main/docs/opening-with-new-project-system.md
如果你直接使用SDK风格的项目系统的GUID,它会强制在新的项目系统中打开。虽然没有明显的性能差异,所以使用旧的GUID是可以的。GUID也在该文档的底部列出。

相关问题