При создании NuGet с использованием Team Foundation Server отсутствуют зависимости - PullRequest
0 голосов
/ 08 января 2020

Я создал простую библиотеку классов в. net стандарта 2.0 с несколькими зависимостями nuget, такими как Dapper.

Я использую Team Foundation Server 16 для сборки и упаковки проекта. Моя проблема в том, что когда я затем перехожу к своему новому пакету NuGet, он не перечисляет свои зависимости в диспетчере пакетов NuGet в VS, и мне приходится впоследствии устанавливать их вручную.

Создание такого же пакета nuget Библиотека классов из Visual Studio 2019 локально работает как задумано.

Мои задачи по сборке в TFS:

  1. Использование nuget 5.4.0
  2. Восстановление NuGet
  3. Построение решения
  4. Запуск сценария (файл .bat для обновления номера версии)
  5. Пакет NuGet
  6. Publi sh артефакт сборки

Пакет NuGet использует настройки по умолчанию с командой "pack" и путем, указывающим только на файл .csproj.

1 Ответ

1 голос
/ 08 января 2020

Создание пакета nuget из той же библиотеки классов из Visual Studio 2019 локально работает, как и предполагалось.

Это одна проблема, связанная с командой nuget pack. Когда вы упаковываете проект .net standard в VS локально, он (правая кнопка мыши => pack ) фактически вызывает dotnet cli вместо nuget.exe, чтобы выполнить работу pack.

На данный момент команда nuget pack не может хорошо работать с теми проектами, которые используют PackageReference для управления пакетами nuget. (Включая .net framework проекты с PackageReference, .net core и .net standard проектами.)

Подробнее см. Обсуждения здесь и здесь .

Чтобы устранить эту проблему (для TFS2017 и выше):

Используйте команду do tnet pack вместо nuget pack, А для конвейера в tfs используйте do tnet восстановление, сборку, сборку задач вместо восстановления nuget, задачи пакета nuget.

enter image description here

Обновление 1 для TFS2016:

Поскольку TFS будет запускать эти задачи в агентах tfs, один из альтернативных способов - установить .net core sdk вручную, а затем использовать задачу командной строки для выполнения dotnet pack команда для создания пакетов nuget.

.net core sdk ссылка для скачивания здесь .

Update2:

Кроме того, мы все еще можем использовать команду nuget pack / задача. Чтобы включить эти зависимости, нам нужно создать дополнительный xx.nuspe c файл с содержимым, подобным следующему:

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    <id>PackageName</id>
    <version>1.0.0</version>
    <title>xxx</title>
    <authors>xxx</authors>
    <owners>xxx</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <description>xxx</description>
    <releaseNotes>xxx</releaseNotes>
    <copyright>Copyright 2020</copyright>
    <tags>Tag1 Tag2</tags>
    <dependencies>
        <dependency id="Dapper" version="1.30.0"/>
        //define other dependencies manually here. 
   </dependencies>
  </metadata>
</package>

Поместите этот файл в тот же каталог, где существует xx.csproj , а затем nuget pack команда / задача теперь может создать пакет с зависимостями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...