如何为 .NET Core cli 应用程序创建巧克力包?

How to create a chocolatey package for a .NET Core cli application?

我有一个用 C# 编写的非常基本的 cli 应用程序(基本上打印 "hello world"),它使用 .net 核心 运行time.

我尝试通过以下方式制作巧克力包装:

  1. 运行宁choco new hcli
  2. 手动修改生成的 .nuspec 文件以提供信息(版本、作者...)
  3. 运行宁choco pack

这产生了一个 .nupkg 文件,当我 运行 choco install hcli.0.0.1.nupkg 我得到 ERROR: This package does not support 64 bit architecture.

我怀疑 chocolatey 不支持基于 project.json 的项目,the documentation 没有提及任何关于 .net core 的内容。

我做错了什么?

project.json 文件:

{
  "version": "0.1.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true,
    "outputName": "hcli"
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  },
  "runtimes": {
    "win7-x64": {}
  }
}

Chocolatey 在 post 时不支持 visual studio 个项目,也不支持 project.json。

修正错误

如果您没有设置或调整任何包装,您看到的是一个很常见的错误。

生成包装后,您是否检查过 tools\chocolateyInstall.ps1 的内容?我会审查和调整那些生成的自动化脚本(并审查自述文件)。

如果您不需要自动化脚本,只需删除它们并将您的二进制文件放入包中。

正如您所指出的,https://chocolatey.org/docs/create-packages

上有一篇更详细的文章

备选方案 - 使用 NuGet 打包

您始终可以使用 NuGet 生成包,然后使用 Chocolatey 使用它。只要它与 NuGet v2(当前)兼容,您就可以开始使用了。另一个方面是,如果您在 DLL 级别有依赖项,请将它们包含在打包中 - 依赖项实际上是在应用程序级别。就像对 dotnetcore 包的依赖。