当我为.NET Core / Standard项目执行dotnet sln add {myProject.csproj}
时,它会将其添加为项目类型(我认为){FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
而不是.NET Core' {9A19103F-16F7-4668-BE54-9A1E7A4F7556}
。因此,当我在Visual Studio中打开解决方案时,它会抱怨并且升级" csproj
到.NET 框架 csproj
,而不是.NET Core。我可以手动编辑sln
,但这是一件苦差事。
我做错了吗?有没有我失去的论据?
答案 0 :(得分:1)
CLI实际上是在做正确的事情,这是一个VS / Project System错误。
CLI调用msbuild以获取要使用的默认项目类型GUID。 MSBuild将C#和VB项目的$(DefaultProjectTypeGuid)
设置为“经典”项目,以允许CLI将“经典”和“SDK样式”项目添加到解决方案中。
然后,经典GUID(FAE04EC0…
)会触发一个选择逻辑,查看项目中是否设置了TargetFramework
或TargetFrameworks
以确定“新”或“经典”项目系统将被使用。我们的想法是,在某些时候只会使用新的项目系统,而且在未来的某些更新中,经典的项目系统可能不再是VS的一部分(这是GitHub上很多评论的基调)。
根据the logged GitHub issue,错误是当选择新项目系统时,解决方案将更新为VS /解决方案不应看到的“新”GUID。