Как создать шоколадный пакет для приложения .NET Core cli?

У меня есть очень простое приложение cli (которое в основном печатает "hello world"), написанное на С# и использующее среду выполнения ядра .net.

Я попытался создать шоколадный пакет:

  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, в документации ничего не упоминается о ядре .net.

Что я делаю неправильно?

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": {}
  }
}

person Chedy2149    schedule 30.01.2017    source источник


Ответы (1)


Chocolatey не поддерживает ни проекты Visual Studio, ни project.json на момент написания этой публикации.

Исправить ошибку

То, что вы видите, является довольно распространенной ошибкой, если вы не настроили или не настроили какую-либо упаковку.

Просматривали ли вы содержимое tools\chocolateyInstall.ps1 после создания упаковки? Я просматривал и корректировал те сценарии автоматизации, которые были сгенерированы (и просматривал файл readme).

Если вам не нужны сценарии автоматизации, просто удалите их и сохраните свои двоичные файлы в пакете.

Как вы указали, на https://chocolatey.org/docs/create-packages

Альтернативный вариант — использовать NuGet для упаковки

Вы всегда можете использовать NuGet для создания пакета, а затем использовать его с помощью Chocolatey. Пока он совместим с NuGet v2 (в настоящее время), все должно быть в порядке. Другим аспектом этого является то, что если у вас есть зависимости на уровне DLL, включите их в пакет — зависимости на самом деле находятся на уровне приложения. Как зависимость от пакета dotnetcore.

person ferventcoder    schedule 30.01.2017