当我为.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
,但这是一件苦差事。
我做错了什么吗?我错过了什么论据吗?
2条答案
按热度按时间fcg9iug31#
CLI实际上在这里做了正确的事情,这是一个VS/Project系统错误。
CLI调用msbuild以获取要使用的默认项目类型XNUMX。MSBuild将C#和VB项目的
$(DefaultProjectTypeGuid)
设置为“经典”项目,以允许CLI将“经典”和“SDK风格”项目添加到解决方案中。经典之作(
FAE04EC0…
)然后触发一个选择逻辑,该逻辑查看项目中是否设置了TargetFramework
或TargetFrameworks
,以确定是否将使用“新”或“经典”项目系统。(这是GitHub上很多评论的语气)。根据the logged GitHub issue,这个bug是当新的项目系统被选中时,解决方案被更新为VS/the solution不应该看到的“新”文件。
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也在该文档的底部列出。