如何使用 nuke 安装 dotnet 工具

How to install dotnet tool with nuke

我是 Nuke 的新手,正在尝试从 Cake 过渡到 Nuke。 在 Cake 中,我可以选择安装(本地)工具:

#module nuget:?package=Cake.DotNetTool.Module&version=0.3.0

#tool dotnet:?package=my.package.id&version=1.0.1

我已经在 Nuke 中试过了:

[PackageExecutable(
    packageId: "my.package.id",
    packageExecutable: "mypakagedtool.exe",
    Version = "1.0.1")]
readonly Tool MyPackagedTool;

但是returns一个:

Assertion failed: Could not find package 'my.package.id' (1.0.1) using:
 - Project assets file 
 - NuGet packages config

我猜这不是针对 dotnet 工具,而是针对 nuget 工具?

我的工作方式是将其包含在 build.csproj:

  <ItemGroup>
    <PackageDownload Include="MyPackageId" Version="[1.0.1]" />
  </ItemGroup>

并在 Build.cs 中:

[PackageExecutable("MyPackageId", "MyTool.dll")] readonly Tool MyTool;

然后可以调用该工具:

MyTool("arguments");

...当然应该设置 nuget.config 以授予对包存储库的访问权限。

Nuke Build 中,您可以执行以下操作(此示例适用于 OctopusTools):

nuke :addpackage OctopusTools

这导致 this <ItemGroup/> 元素被添加到 Build (Nuke) 项目的 .csproj 中:

<ItemGroup>
    <PackageDownload Include="OctopusTools" Version="[9.0.0]" />
</ItemGroup>