.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 进行还原,然后才可以使用这些本地工具。