在 dotnet core SDK 版本之间切换

Posted

技术标签:

【中文标题】在 dotnet core SDK 版本之间切换【英文标题】:Switch between dotnet core SDK versions 【发布时间】:2017-06-23 22:51:16 【问题描述】:

我最近安装了 VS 2017 RC,然后我的 dotnet 版本自动指向 1.0.0-preview4-004233。因此,每当我使用命令dotnet new -t Console 创建一个新项目时,虽然我看到了.csproj 文件,但我看不到project.json

当我在 C:\Program Files\dotnet\sdk 检查我的机器上可用的 dotnet 版本时,我看到了多个可用版本。

有什么方法可以将 dotnet core 切换回早期版本 - 1.0.0-preview2-0031331.0.0-preview4-004233 无需卸载。

【问题讨论】:

asdf-vm.com 可以切换dotnet-core版本,包括sdk 【参考方案1】:

您可以使用项目根目录中的 global.json 文件来执行此操作:

验证您机器上的 SDK 列表:
dotnet --list-sdks

你会看到这样的列表。

2.1.100 [C:\Program Files\dotnet\sdk]
2.1.101 [C:\Program Files\dotnet\sdk]
2.1.103 [C:\Program Files\dotnet\sdk]
2.1.104 [C:\Program Files\dotnet\sdk]
[...lines omitted...]
2.1.601 [C:\Program Files\dotnet\sdk]
2.2.101 [C:\Program Files\dotnet\sdk]
3.0.100-preview3-010431 [C:\Program Files\dotnet\sdk]
创建一个文件夹作为项目的根目录,您将在其中运行dotnet new。 在该文件夹中,运行以下命令:dotnet new globaljson

结果将如下所示:


  "sdk": 
    "version": "3.0.100-preview3-010431"
  

version 中,将3.0.100-preview3-010431 替换为--list-sdks 列表中您喜欢的版本。例如:

  "sdk": 
    "version": "2.2.101"
  

运行dotnet --version 进行验证。您应该会看到:
2.2.101
运行适当的dotnet new 命令来创建您的项目。

【讨论】:

VS2017 CE 上安装 dot net core 时遇到问题:VS 在选择工作负载时会安装最新的 dot net core 版本(在撰写此评论时为 v2)。我也安装了 .net core v1.0.4(项目需要它),但 VS 根本无法识别它。使用这种方法解决了这个问题。 我有一个多项目解决方案。我尝试将此 global.json 添加到解决方案文件夹和 web api 项目文件夹以强制 2.1.403,但该项目继续发布 2.1.5 - 知道我做错了什么吗? @Darren 您能否运行dotnet --list-sdks 来验证您的系统上是否确实安装了 2.1.403 SDK? 有没有办法切换整个系统的dotnet SDK版本?那么所有的解决方案都会默认使用这个版本? 这个答案是救命稻草。几天来尝试构建 NopCommerce 插件时遇到了麻烦,最终结果证明 .net core 3 以微妙的方式破坏了构建行为,并且由于某种原因默认用于构建 netcoreapp2.1 应用程序。修复将global.json 中的dotnet 版本修复为2.1。非常感谢!【参考方案2】:

Dotnet 通常使用最新的 SDK 版本,除非它找到一个 global.json 文件告诉它不这样做。 The explanation by microsoft

dotnet 在工作目录(不一定是项目或解决方案目录)中查找文件,如果找不到,则从那里开始向上搜索。 documentation

创建 global.json 文件的一种简单方法是在项目目录中运行 dotnet new globaljson --sdk-version 1.0.0-preview2-003133。 create a global.json from the cli

【讨论】:

【参考方案3】:

当我们在 OS 上安装每个 dotnet core SDK 时,每个项目可以单独使用 SDK 版本。因为 SDK 有全局安装。我们可以通过这个命令创建global.json来配置每个项目的设置:

dotnet new globaljson

最终选择了正确的版本。

选择SDK版本的流程是:

dotnet 搜索 global.json 文件迭代反向导航 从当前工作目录向上的路径。 dotnet 使用在找到的第一个 global.json 中指定的 SDK。 如果没有找到global.jsondotnet 使用最新安装的 SDK。

参考资料: https://docs.microsoft.com/en-us/dotnet/core/tools/global-json?tabs=netcore3x#globaljson-and-the-net-core-cli

一步一步: https://***.com/a/42078060/14557383

【讨论】:

【参考方案4】:

你可以签入 global.json

运行命令 dotnet --list-sdks

你会看到结果

2.2.110 [C:\Program Files\dotnet\sdk] 5.0.103 [C:\Program Files\dotnet\sdk]

【讨论】:

这将列出。好的。然后切换?

以上是关于在 dotnet core SDK 版本之间切换的主要内容,如果未能解决你的问题,请参考以下文章

win10已经安装了.net core还提示要安装

迷失在版本和工具中:.NET Core、Core Tools、dotnet Core CLI、

dotnet跨平台微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1,还有Entity Framework Core RC2

Visual Studio 2019 16.1 使用 .NET Core 3.0

Dotnet Core应用跨框架版本运行

VS2019打开项目加载失败:无法找到 .NET Core SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配。