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

时间:2017-11-15 16:09:12

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

当我为.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,但这是一件苦差事。

我做错了吗?有没有我失去的论据?

1 个答案:

答案 0 :(得分:1)

CLI实际上是在做正确的事情,这是一个VS / Project System错误。

CLI调用msbuild以获取要使用的默认项目类型GUID。 MSBuild将C#和VB项目的$(DefaultProjectTypeGuid)设置为“经典”项目,以允许CLI将“经典”和“SDK样式”项目添加到解决方案中。

然后,经典GUID(FAE04EC0…)会触发一个选择逻辑,查看项目中是否设置了TargetFrameworkTargetFrameworks以确定“新”或“经典”项目系统将被使用。我们的想法是,在某些时候只会使用新的项目系统,而且在未来的某些更新中,经典的项目系统可能不再是VS的一部分(这是GitHub上很多评论的基调)。

根据the logged GitHub issue,错误是当选择新项目系统时,解决方案将更新为VS /解决方案不应看到的“新”GUID。