问题描述
注意::我使用VS 2019 Professional 版本16.0.2
问题: 我的源代码库在VS 2017中工作得很好。但是为了支持.NET core 3.1,我决定将VS 2017升级到VS 2019。 当我在VS 2019中开放源代码时,它没有将.NET Standard 2.1和.NET Core 3.1显示为Target Framework的一部分。当我寻找项目属性时。
当我使用<TargetFramework>netcoreapp3.1</TargetFramework>
修改.csproj文件并进行构建时,我得到:
当前的.NET SDK不支持定位.NET Core 3.1。要么 目标.NET Core 2.1或更低版本,或者使用的.NET SDK版本 支持.NET Core 3.1。
对于另一个项目,当我使用<TargetFramework>netstandard2.1</TargetFramework>
修改.csproj文件并进行构建时,我得到:
当前的.NET SDK不支持定位.NET Standard 2.1。 目标.NET Standard 2.0或更低版本,或使用.NET版本 支持.NET Standard 2.1的SDK。
我尝试过的事情:
- 现在,我决定在VS 2019中创建一个全新的项目。然后
令人惊讶的是,它只是向我展示了
.NET Standard 2.1
和.NET Core 3.1
作为目标框架的一部分。@H_404_34@ - 还要查看以前的StackOverflow答案。我已经在解决方案的顶部创建了global.json文件。 global.json看起来像@H_404_34@
{ “ sdk”:{ “ version”:“ 3.1.402” } }
但是我作为解决方案的一部分。我有2个项目。第一个项目是netstandard
,第二个项目是netcore
[我的测试项目是netcore]。测试项目允许我从项目属性目标框架部分中选择3.1,但是我的第一个项目无法向我展示netstandard2.1
作为项目属性目标框架的一部分。我的global.json错误吗?
期望: 我在VS 2017上完美构建的源代码应该在VS 2019上构建。
解决方法
回答我的问题:
- 更新VS 2019 -我使用的是VS 2019 16.0.2 Professional(默认情况下由IT触发)。要解决我的问题,我需要将VS 2019更新到16.4,因为它包含.NET Core 3.1。
- 更新.sln文件:我需要这样做,因为我的源代码是使用vs2017开发的,这就是为什么我的.sln文件符合VS2017的原因。 VS 2019将使用MSBuild16。确保.sln应该具有VisualStudioVersion = 16的条目。。(要生成此文件,您可以使用VS2019创建一个虚拟项目应用程序,然后将项目.sln文件与生成的VS2019 .sln文件,您将看到不同)
注意:另外,请确保是否使用的是.NET Core 2.1 SDK,然后安装适用于VS2019的v2.1.810。