我在一台设备上安装了 UOS 系统,但是我如何在我的主开发设备上和 UOS 系统传输文件?通过 dotnet tool 工具可以完成大部分的工作,当然,使用 dotnet tool 不仅做文件传输,还能做很多特别强大的应用。本文就使用文件传输作为例子告诉大家如何使用 dotnet tool 在多个平台里面使用相同的一套技术和命令行作为工具

在 dotnet 里,可以制作一个 dotnet 应用,将这个应用发布到 NuGet 上,无论是外网的 NuGet 的还是自己内网搭建的都可以,然后其他小伙伴就可以通过 NuGet 下载到这个应用。这样的应用就叫 dotnet tool 工具

使用 dotnet tool 工具的优势在于,工具使用自己熟悉的 .NET 编写,其次是分发方便,毕竟咱的项目基本上都需要安装 NuGet 包,也就是咱都是有 NuGet 源和环境的,因此可以方便在设备上利用 NuGet 获取工具或上传自己的工具

在开始之前,请在 UOS 上安装必要的工具,如 dotnet 开发工具,请看 dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法

接下来咱需要使用的工具有两个,一个是用来开启本地文件服务器的,另一个是用来下载文件的

在 UOS 上有一个限制,也就是不能调用全局的工具,只能使用文件夹内本地工具,这个问题我和官方说了,请看 dotnet global tool can not run in UOS system · Issue #13399 · dotnet/sdk

例如我期望在 UOS 上传输一个文件到我的开发机器上?可以如何做?可以使用下面步骤

  1. 在 UOS 上开启文件服务器
  2. 在开发机上使用下载工具下载文件

如果需要传输一个文件夹呢?其实只需要将文件夹压缩就可以使用上面步骤

  1. 在 UOS 上将文件夹压缩成文件
  2. 在 UOS 上开启文件服务器
  3. 在开发机上使用下载工具下载文件

下面咱一步步来

压缩文件夹成文件

这一步在 UOS 上做,可以使用自带的 tar 工具,压缩命令如下

 tar -cvf 1.tar lindexi/

上面命令就是将 lindexi 文件夹压缩到 1.tar 文件里

详细请看 Linux tar压缩命令:打包与解打包命令

安装 dotnet tool 工具

在 UOS 开启文件服务器可以使用 dotnet-serve 工具,在开始之前需要先初始化一下工具

dotnet new tool-manifest

上面代码将会在当前工作路径下初始化 dotnet tool 工具

然后使用下面命令安装 dotnet 本机文件服务器工具

dotnet tool install dotnet-serve

安装完成之后,可以使用下面代码开启文件服务器

dotnet tool run dotnet-serve -a 0.0.0.0

而在 Windows 端开启文件服务器就没有那么长的命令了,因为 Windows 下是支持全局工具的,也许后续 UOS 也会支持

在 Windows 下第一步是安装工具,注意和 UOS 上安装不同的是添加了 -g 表示全局安装,全局安装的工具,可以在任意工作路径下才能使用。而不加上 -g的是本地安装,只有在当前当前工作路径下才能使用

dotnet tool install -g dotnet-serve

接着使用下面代码开启文件服务器

dotnet serve -a 0.0.0.0

详细请看 dotnet serve 一句话开启文件服务器 通过 HTTP 将文件共享给其他设备

下载文件

在 UOS 上是 Linux 系统,可以使用 wget 的工具下载文件,而在 Windows 下可以使用 dotnetCampus.FileDownloader.Tool 工具下载文件,这是一个完全在 GitHub 开源的项目

安装 dotnet tool 的方法和上面安装文件服务器相同,在 Windows 下使用下面代码作为全局工具安装

dotnet tool install -g dotnetCampus.FileDownloader.Tool

安装完成之后,可以使用下面命令下载文件

DownloadFile -u 下载链接 -o 下载文件保存路径

在 UOS 上开启文件服务器,使用下面命令开启

dotnet tool run dotnet-serve -a 0.0.0.0

再打开一个终端,使用下面命令找到 UOS 的 ip 地址

sudo ifconfig

假定在 UOS 上开启文件服务器的工作路径下,有刚才压缩好的 1.tar 文件准备传输到 Windows 服务器上

先记下 UOS 的 ip 地址,和执行 dotnet serve 开启的服务器端口,如 36867 端口,此时可以在 Windows 下使用下面命令下载 1.tar 文件

downloadfile -u http://172.20.115.72:36867/1.tar -o 1.tar 

上面代码的 172.20.115.72 就是 UOS 设备的地址

这样就仅通过工具完成了 UOS 到 Windows 文件的传输,有趣的是,反过来也可以,使用的工具和命令也可以是相同的

更多关于下载工具请看 https://github.com/dotnet-campus/dotnetCampus.FileDownloader

也许本文的例子还不够让大家看到 dotnet tool 的优势,因为 UOS 作为 Linux 系统,有大量可用的自带的命令行工具,只是存在一个坑就是我对这些工具都是不熟悉的。而 dotnet tool 可以让两边都使用相同的工具和命令

欢迎小伙伴加入 xamarin 国产 UOS 开发群: 810052083


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-%E5%9C%A8%E5%9B%BD%E4%BA%A7-UOS-%E7%B3%BB%E7%BB%9F%E5%88%A9%E7%94%A8-dotnet-tool-%E5%B7%A5%E5%85%B7%E5%81%9A%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

微软最具价值专家


无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利