点击上方蓝字关注“汪宇杰博客”
命令行是程序员装逼利器,.NET Core也可以写命令行程序,但是如何分发给其他程序员使用,一直是个问题。现在,有了.NET Core Global Tools,可以很方便的解决分发问题,我们来看看吧。
啥是 Global Tools
.NET Core Global Tools 是一种特殊的nuget包,内容就是一个控制台应用程序。在异教徒的世界里,程序员可以通过pip3、npm来安装命令行工具使用,而微软的世界里有nuget,它是分发命令行工具的绝佳平台。
为啥不用 UWP?
可能有小伙伴问,Windows 10 有应用商店,UWP也有命令行程序,为啥不通过 UWP 来编写和分发命令行工具呢?
首先,UWP 只能在 Windows 平台运行,其次,UWP目前并不支持所有 .NET Core 的 API,最后,平台的限制、商店和系统的 Bug、Runtime 和 SDK 的药丸……
关于这个,可能只有一张图能解释:
黑完 UWP,我们就有充分的理由只投资.NET Core了!
编辑工程文件
在工程文件 (.csproj) 的 PropertyGroup 里加入
<PackAsTool>true</PackAsTool>
<ToolCommandName>azureblobsync</ToolCommandName>
<PackageOutputPath>./nupkg</PackageOutputPath>
其中,azureblobsync 表示最终用户要启动你的程序得在cmd里输入的命令,./nupkg 是最终生成nuget包的文件夹路径。
打包 NuGet
在工程根目录运行
nuget pack
这会在 ./nupkg 目录下生成一个 Debug 编译的nuget包,用于本地开发调试。我的工具名为 Edi.AzureBlobSync,命令设为 azureblobsync
安装并测试
还是在工程根目录运行命令
dotnet tool install --global --add-source ./nupkg Edi.AzureBlobSync
这会在机器上安装一个来源于本地 nupkg 文件夹底下的 Debug 版本的.NET Core Global Tool。然后自己试一下会不会爆:
我的工具运行很成功,没有爆,毕竟是信仰护体。
测试完成后,卸载工具:
dotnet tool uninstall --global edi.azureblobsync
予力众生
使用 Release 配置重新生成nuget包:
dotnet pack --configuration Release
然后,上传到nuget.org,并等待审核以及索引完成。
成就不凡
现在,全世界的.NET程序员都可以通过安装并使用你的工具啦!
dotnet tool install --global edi.azureblobsync