为什么我已经在 Visual Studio 中安装了.Net 8.0,但是命令行显示的版本仍然是 6.0.31?

10 天前
 huzhikuizainali

我当前用 Visual Studio 进行 C#代码调试,希望学习一下单元测试相关知识。今天刚刚安装了 Visual Studio ,并“单独”安装了.Net 8.0 (见下方截图)。但是安装成功以后我运行 dotnet --info 显示结果如下: 可以看到 Host:Version: 6.0.31 这与我刚刚安装好 Visual Studio ,没有单独安装.Net 8.0 时的情况是一样的。

我之前使用 VS code 时是单独从微软网站上下载安装.Net 8.0 。安装以后运行 dotnet --info ,Host:Version: 当时显示的是 8.0 。 请问我如何才能将.Net 版本升级到 8.0 呢?

global.json file:
  Not found

Host:
  Version:      6.0.31
  Architecture: x64
  Commit:       e2ca2f8a1c

.NET SDKs installed:
  No SDKs were found.

.NET runtimes installed:
  Microsoft.AspNetCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.31 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 6.0.31 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Download .NET:
  https://aka.ms/dotnet-download

Learn about .NET Runtimes and SDKs:
  https://aka.ms/dotnet/runtimes-sdk-info

387 次点击
所在节点    .NET
6 条回复
INCerry
10 天前
iLoveSS
10 天前
用 vs 开发.net 的话,装 vs 自带的 sdk 开发环境, 功能列表里有个.net sdk.

你图里勾的这个是 runtime,运行环境.
huzhikuizainali
10 天前
@iLoveSS 谢谢你的回复,下面 GPT 的答案与你的方案有一致性:
GPT:在 Visual Studio Installer 中勾选 .NET 8.0 运行时并不一定意味着你已经安装了 .NET 8.0 SDK 。运行时和 SDK 是不同的组件:

.NET 运行时:用于运行 .NET 应用程序,但不包含开发和编译应用程序所需的工具。
.NET SDK:包括运行时,以及用于开发和编译 .NET 应用程序的工具。
要确认你是否安装了 .NET 8.0 SDK ,可以按照以下步骤操作:

检查 Visual Studio Installer:

打开 Visual Studio Installer 。
选择你的 Visual Studio 实例,点击“修改”。
在“单个组件”选项卡中,搜索 .NET 8.0 SDK 。
确保已勾选 .NET 8.0 SDK 。

-------------------问题:在 Installer 中搜索不到“ .NET 8.0 SDK”! 只能搜索到.NET SDK 。可是.NET SDK 有好几个版本。Installer 怎么知道我要安装的是 8.0 ?还是 9.0 ?或者他会根据我安装的其他选项自动决定安装那个版本的 SDK ?
https://dotnet.microsoft.com/zh-cn/download/dotnet
iLoveSS
10 天前
@huzhikuizainali installer 里的 sdk 就是.net sdk. 不过一般不这么装,在 installer 最开始选工作负荷(workload)的时候,选.net 桌面开发或者相关 Asp.net 开发都会默认附带.net sdk. 很少独立选 sdk.

另外,如果你只用 vscode 开发的话, 下网站上的 sdk 独立安装也就够了. vs 里带 sdk 跟 vs 是绑定的, 你单独下载安装的 sdk 有可能会和 vs 版本不匹配用不了.
huzhikuizainali
10 天前
@iLoveSS 多谢指教。工作负荷(workload)的时候,选.net 桌面开发或者相关 Asp.net 开发都会默认附带.net sdk
-----------
如果通过这种方式变相安装.net sdk ,那么开发者是否没有.net sdk 版本选择的余地了?如果客户由于历史原因,要求只能用较旧的.net sdk 版本,那怎么办?这是就算操作系统里有较旧版本的 SDK ,也会因为“vs 里带 sdk 跟 vs 是绑定的, 你单独下载安装的 sdk 有可能会和 vs 版本不匹配用不了” 而无济于事!
iLoveSS
10 天前
@huzhikuizainali sdk 是开发工具并附带了同版本的 runtime,而 runtime 只是是运行环境,别弄错了.

高版本的 sdk 可以编译旧版本的程序,但是运行该旧版程序需要对应版本的 runtime.

所以 sdk 装一套用新的就可以了,把 targetframework 设置成你的目标(如果不使用默认的话),并根据需要安装其它版本 runtime.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050797

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX