专栏首页草根专栏.NET Core 3.0 本地工具

.NET Core 3.0 本地工具

.NET Core从最早期的版本就开始支持全局工具了。如果仅仅需要在某个项目中或某个文件夹中使用特定的工具,那么.NET Core 3.0就允许您这样做。

使用.NET Core 3.0,您可以在特定的文件夹下安装“本地”工具,它的作用范围仅限于该文件夹及其子文件夹。

在.NET Core 3.0之前

如果我想在一个项目中使用Cake Build,那么在.NET Core 3.0之前,我可以这样做,把Cake.Tool安装为全局的工具:

但是如果多个项目需要使用不同版本的 Cake.Tool,那么在.NET Core 3.0之前,我们只能这么做:

然后这样用:

但是这样也有几个缺点:

  • 这个命令比较难记,略长。
  • 没有这个项目中所安装工具的清单。
  • 如果同一个版本的工具安装在n个地方,那么就有n个拷贝。
  • 由于工具文件的后缀名可能不一样,所以启动工具的命令可能是和平台有关的。

.NET Core 3.0 本地工具

打开Visual Studio的Package Manager Console(Powershell或者其它终端也可以),在安装本地工具之前,首先要创建一个本地工具清单文件,使用命令dotnet new tool-manifest:

然后进入项目所在目录,在.config文件夹下面可以看到名为dotnet-tools.json这个文件:

然后我在这个项目里面安装Cake.Tool这个工具,使用dotnet tool install xxx即可:

然后再看dotnet-tools.json文件:

可以看到cake.tool显示在里面了。

运行本地工具

如果Cake.Tool是全局安装的话,那么我直接执行cake --help就应该有结果:

但是,很显然这样做不行。

由于Cake.Tool是本地安装的,运行本地工具需要在前边加上dotnet:

这样就可以了。

其实上面那种写法是下面写法的简写:

也可以这样写:

此外,在工具安装目录的子目录里也可以使用这个工具。

共享本地工具

我们可以把.config目录提交到源码管理,这样的话,其它开发者也可以使用安装的本地工具了。这些工具实际是安装在全局nuget包缓存里,如果第一次运行的时候没有安装工具的包,那么你需要先执行 dotnet tool restore 进行还原,然后才可以使用这些本地工具。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET Core Web API + Identity Server 4 + Angular 6 实战小项目视频 (第一集试水)

    这个项目比较简单, 适合ASP.NET Core Web API 和 Angular 初学者.

    solenovex
  • Identity Server 4 - Hybrid Flow - Claims

    前一篇 Identity Server 4 - Hybrid Flow - MVC客户端身份验证: https://www.cnblogs.com/cgzl/p...

    solenovex
  • 用ASP.NET Core 2.0 建立规范的 REST API -- GET 和 POST

    本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblog...

    solenovex
  • [海豚区块链] 全球最大啤酒制造商利用区块链技术追踪广告数据

    全球最大啤酒制造商百威英博计划通过区块链技术改变数字广告供应链,并于日前通过移动营销应用Kiip推出了首个广告系列。

    海豚区块链
  • select 信道好帮手

    select 语句用于在多个发送/接收信道操作中进行选择。select 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select 会...

    酷走天涯
  • K8S 生态周报| NGINX Ingress Controller 新版本发布

    「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s 生态」 ( https://zhuanlan....

    Jintao Zhang
  • iOS学习——如何在mac上获取开发使用的模拟器的资源以及模拟器中每个应用的应用沙盒

    如题,本文主要研究如何在mac上获取开发使用的模拟器的资源以及模拟器中每个应用的应用沙盒。做过安卓开发的小伙伴肯定很方便就能像打开资源管理器一样查看我们写到手...

    mukekeheart
  • JFinal框架使用

    表单直接提交页面,不用ajax 后台; /** * 修改 */ public void edit() { Strin...

    二十三年蝉
  • 图卷积网络图深度学习(上)

    基于图的机器学习是一项困难的任务,因为图的结构非常复杂,而且信息量也很大。本文是关于如何利用图卷积网络(GCNs)对图进行深度学习的系列文章中的第一篇。GCNs...

    AiTechYun
  • wordpress首页文章列表不显示指定分类文章

    那会说了会为大家讲解自己怎么将『微语』制作出来的,现在先做些准备工作,其实这也是众人的智慧凝聚出来的,光我自己你就是到让中国男足冲出世界杯那天我都是实现不出来的...

    汐楓

扫码关注云+社区

领取腾讯云代金券