【问题标题】:What controls Visual Studio .net core version?什么控制 Visual Studio .net 核心版本?
【发布时间】:2018-03-26 05:12:06
【问题描述】:

我一辈子都想不通为什么我的所有项目都安装了 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 是什么意思

【问题讨论】:

    标签: .net-core visual-studio-2017 .net-standard


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我有最新的VS,甚至下载了企业试用版只是为了尝试一个新的。一样。奇怪的是 cli dotnet build 完全按预期工作。我的构建服务器也可以毫无问题地构建这些。我不知道 Visual Studio 是否使用了不同的 dotnet 可执行文件或发生了什么。
    • VS 带有一个“SDK 解析器”,可以从 .net 核心 sdk 版本中定位 Microsoft.NET.Sdk 文件夹。它会寻找 global.json 来控制它,但应该解析为 1.1.0 或 2.* 版本。您可以通过dotnet --info 检查 2.1.0 预览的位置并尝试将其删除。 (where dotnet 也是一个很好的指示)
    • 谢谢,我删除了 2.0 预览版 sdks 以及我安装的 1.0 预览版 sdks,一切都开始按我的预期工作。我不确定为什么预览版 SDK 的存在会导致此问题,但哦,很高兴修复它!
    猜你喜欢
    • 2018-02-15
    • 2017-12-07
    • 2017-08-18
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多