前言

为了应对.NET SDK能够支持的程序集项目(例如iOS、Android、WASM)的不断增长,从.NET 6开始,允许用户仅安装必要的SDK(例如ASP.NET Core),而不是一次性安装“完整版”SDK。

这一切的基础,是新的dotnet CLI命令——workload

Demo

1.列表

首先,列出可安装的工作负载:

dotnet workload search

目前支持的工作负载如下:

Workload ID           Description
-------------------------------------------------------------------------------------------
android               .NET SDK Workload for building Android applications.
android-aot           .NET SDK Workload for building Android applications with AOT support.
ios                   .NET SDK Workload for building iOS applications.
maccatalyst           .NET SDK Workload for building macOS applications with MacCatalyst.
macos                 .NET SDK Workload for building macOS applications.
maui                  .NET MAUI SDK for all platforms
maui-android          .NET MAUI SDK for Android
maui-desktop          .NET MAUI SDK for Desktop
maui-ios              .NET MAUI SDK for iOS
maui-maccatalyst      .NET MAUI SDK for Mac Catalyst
maui-mobile           .NET MAUI SDK for Mobile
maui-windows          .NET MAUI SDK for Windows
tvos                  .NET SDK Workload for building tvOS applications.
wasm-tools            .NET WebAssembly build tools

2.安装

然后,下列命令安装需要的工作负载:

dotnet workload install {Workload_ID}

我们安装maui-windows试试:

dotnet workload install maui-windows//输出
Updated advertising manifest microsoft.net.sdk.android.
Updated advertising manifest microsoft.net.sdk.ios.
Updated advertising manifest microsoft.net.sdk.macos.
Updated advertising manifest microsoft.net.workload.emscripten.
Updated advertising manifest microsoft.net.sdk.maccatalyst.
Updated advertising manifest microsoft.net.sdk.tvos.
Updated advertising manifest microsoft.net.workload.mono.toolchain.
Updated advertising manifest microsoft.net.sdk.maui.
Installing Microsoft.Maui.Core.Ref.win.6.0.101.2068-x64.msi ............ Done
Installing Microsoft.Maui.Core.Runtime.win.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Controls.Ref.win.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Controls.Runtime.win.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Essentials.Ref.win.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Essentials.Runtime.win.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.AspNetCore.Components.WebView.Maui.6.0.101.2068-x64.msi .... Done
Installing Microsoft.Maui.Dependencies.6.0.101.2068-x64.msi .... Done
Installing Microsoft.Maui.Controls.Build.Tasks.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Sdk.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Extensions.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Resizetizer.Sdk.6.0.101.2068-x64.msi ...... Done
Installing Microsoft.Maui.Templates.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Core.Ref.any.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Core.Runtime.any.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Controls.Ref.any.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Controls.Runtime.any.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Essentials.Ref.any.6.0.101.2068-x64.msi ..... Done
Installing Microsoft.Maui.Essentials.Runtime.any.6.0.101.2068-x64.msi ..... DoneSuccessfully installed workload(s) maui-windows.

可以看到,它并没有安装多余的SDK,比如Maui的android版本。

打开VS 2022,新建项目,已经可以创建MAUI项目了,默认情况下是没有的:

3.更新

另外,你可以使用下列命令,将所有已安装的SDK工作负载更新为最新版本:

dotnet workload update//输出
Updated advertising manifest microsoft.net.sdk.ios.
Updated advertising manifest microsoft.net.sdk.android.
Updated advertising manifest microsoft.net.sdk.macos.
Updated advertising manifest microsoft.net.workload.emscripten.
Updated advertising manifest microsoft.net.sdk.tvos.
Updated advertising manifest microsoft.net.sdk.maccatalyst.
Updated advertising manifest microsoft.net.sdk.maui.
Updated advertising manifest microsoft.net.workload.mono.toolchain.Successfully updated workload(s): maui-windows.

4.卸载

当然,你可以将已安装的SDK工作负载卸载:

dotnet workload uninstall maui-windows//输出
Removing workload installation record for maui-windows...
Removing Microsoft.AspNetCore.Components.WebView.Maui.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Controls.Build.Tasks.6.0.101.2068-x64.msi .... Done
Removing Microsoft.Maui.Controls.Ref.any.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Controls.Ref.win.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Controls.Runtime.any.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Controls.Runtime.win.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Core.Ref.any.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Core.Ref.win.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Core.Runtime.any.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Core.Runtime.win.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Dependencies.6.0.101.2068-x64.msi .... Done
Removing Microsoft.Maui.Essentials.Ref.any.6.0.101.2068-x64.msi .... Done
Removing Microsoft.Maui.Essentials.Ref.win.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Essentials.Runtime.any.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Essentials.Runtime.win.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Extensions.6.0.101.2068-x64.msi .... Done
Removing Microsoft.Maui.Resizetizer.Sdk.6.0.101.2068-x64.msi .... Done
Removing Microsoft.Maui.Sdk.6.0.101.2068-x64.msi ..... Done
Removing Microsoft.Maui.Templates.6.0.101.2068-x64.msi .... DoneSuccessfully uninstalled workload(s): maui-windows

结论

可以将此功能理解为SDK的包管理器,保证我们始终安装正确的SDK以及版本。

如果你觉得这篇文章对你有所启发,请帮忙点个或者在看

.NET 6新特性试用 | SDK工作负载相关推荐

  1. .NET 6新特性试用 | 总结:我最喜欢的5个特性

    前言 不知不觉,<.NET 6新特性试用>系列文章已经写了20多篇,而今天终于要告一段落了. 如果你还没有看过,详细文章列表在这里: .NET 6新特性试用系列 在这么多特性中,我最喜欢如 ...

  2. .NET 6新特性试用 | 可空引用类型

    前言 在查看<隐式using指令>功能时,我们在csproj中发现这样一个属性: 那么,Nullable到底是干嘛的? 可为空上下文 严格来说,这不是新特性,而是C# 8.0引入的特性之一 ...

  3. 5.0 新特性试用体验之 Clustered Index

    作者:hzc989 原文来源: https://tidb.net/blog/69dd056c [是否原创]是 [首发渠道]TiDB 社区 [目录] 一.引言 二.基础前情回顾 三.era withou ...

  4. .NET 6新特性试用 | PeriodicTimer

    前言 在.NET中,已经存在了5个Timer类: System.Threading.Timer System.Timers.Timer System.Web.UI.Timer System.Windo ...

  5. .NET 6新特性试用 | 可写JSON DOM API

    前言 我们常用JSON的方式,是将类对象序列化/反序列化: var user = new User { Name = "My IO" }; var json = JsonSeria ...

  6. .NET 6新特性试用 | LINQ功能改进

    前言 .NET6为LINQ添加了多个新API,在本文中,我们将始终使用User类逐一演示这些添加到LINQ中的内容: public class User {public string Name { g ...

  7. .NET 6新特性试用 | Nuget包验证

    前言 我们常常需要将.NET类库打包成Nuget包,以便多个项目公用. 一旦修改类库,尽管代码可以运行,并成功打包成新版本,看起来一切正常,但是你无法保证该更改是安全且兼容的. 而在.Net 6中,提 ...

  8. .NET 6新特性试用 | ArgumentNullException卫语句

    前言 在前面的文章中(<可空引用类型>),我们介绍过编译器会帮我们检查空引用,但是仅仅是警告.最好的方式还是在运行时用卫语句进行检查: private void Test(WeatherF ...

  9. .NET 6新特性试用 | 热重载

    前言 在以前的开发模式下,我们修改代码后必须重新编译.重新运行才能看到效果. 而热重载提供了这样一种特性,它允许你在项目正在运行时修改代码,并将代码更改立即应用于正在运行的应用程序上. 热重载的目的是 ...

最新文章

  1. java gson 工具类_gson工具类将Java类转换为json的使用
  2. poj2912(带权并查集+枚举)
  3. python 中的queue, deque
  4. 带密匙的php加密解密示例分享
  5. python中哪些词是敏感字词_python实现敏感词过滤的几种方法
  6. JVM调优总结(六)-分代垃圾回收详述2
  7. 沈阳建筑大学c语言真题,沈阳建筑大学C语言复习资料.doc
  8. Centos7之搜索命令locate
  9. 数据类型以及数据类型的转换---防止忘记
  10. sql 2005 中分页
  11. 【Tiny4412】Tiny4412开发板介绍
  12. 实现统计二叉树叶子节点个数的算法
  13. php高效率敏感词屏蔽,高效的敏感词过滤方法(PHP)
  14. android 装苹果系统,安卓机子安装苹果IOS系统?
  15. 单链表基本操作的实现——前插法与后插法创建单链表
  16. IT人生之猎人和猎狗
  17. ios 调整麦克风音量_ios 调整麦克风音量_如何在ios 7中获得麦克风音量?
  18. 关于U盘损坏,无法格式化,0空间等问题
  19. PC 路由设置-pc电脑添加路由
  20. 仿探探左右滑动的简单实现

热门文章

  1. 大文件及文件夹上传(续)
  2. ie兼容响应式布局的实现总结 和 针对ie浏览器的CSS
  3. 使用window.postMessage实现跨域通信
  4. 汤姆大叔的6道javascript编程题题解
  5. 使用maven构建项目候,jar包错误的解决办法
  6. Shell 学习笔记之运算符
  7. 代码Review发现问题
  8. Google:推荐几款好用的Chrome浏览器插件
  9. pm_bout_1/2_on_subway
  10. Subversion之路--实现精细的目录访问权限控制(v1.0 更新于2006.12.05)(二)