什么控制 Visual Studio .net 核心版本?

What controls Visual Studio .net core version?

我一辈子都想不通为什么我的所有项目总是安装 NETStandard.Library 1.6.1。

如果我从命令行 运行 dotnet --version 得到以下输出

2.1.0-preview1-007102

我的 .csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
  </ItemGroup>
</Project>

Visual studio 阻止我在 visual studio 内通过 nuget 升级,所以我总是必须手动安装 NETStandard.Library 2.0.0 或搜索堆栈溢出并将隐式版本标记添加到 . csproj,但为什么我必须这样做?什么告诉 visual studio 默认值应该是 1.6?

下面阻止我安装 NETStandard.Library 2.0.0 是什么意思

不应手动编辑此 NuGet 程序包,但在您的情况下,它看起来像是使用了不应与 netstandard2.0.[=15= 一起使用的旧版本工具]

检查您是否有最新的 VS 版本(当前为 15.4.0)并且在项目目录层次结构中没有 global.json 将 SDK 版本设置为低于 2.0.0

此外,我建议不要将日常构建(例如您的 2.1.0 预览版)用于生产工作,因为您需要不断更新它以确保安全,或者在您的项目中创建一个 global.json 文档目录包含:

{
  "sdk": {
    "version": "2.0.2"
  }
}

确保您使用的是 "good" 版本(2.0.2 是 VS 2017 15.4.0 附带的版本)。执行此操作后,您将需要关闭并重新打开解决方案。