Nuget восстанавливает пакеты по-разному на сервере сборки - PullRequest
0 голосов
/ 06 декабря 2018

Локальные машины разработчиков восстанавливают пакет следующим образом:

.. \ Microsoft.Extensions.Configuration.UserSecrets.2.1.1 \ ..

ноСервер сборки, когда он восстанавливает пакеты nuget, меняет некоторые из них на

.. \ microsoft.extensions.configuration.usersecrets \ 2.1.1 \ ..

сстрочные буквы и изменение структуры папок.Когда MSBuild выполняется для решения, он не может найти необходимые файлы, потому что структура папок отличается.Я думаю, что это может быть проблема nuget.config, но я не уверен.

Редактировать: Файл csproj имеет условие, которое проверяет, находится ли основная зависимость (microsoft.extensions.configuration.usersecrets) вправильный путь к папке.Если он не находится в правильном пути к папке, он выдает ошибку сборки.

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Вместо того, чтобы полностью удалять проверку условия для конкретной ссылки на nuget из файла csproj, я проверяю, чтобы убедиться, что пакет не находится ни в одном из расположений структуры папок, чтобы он поддерживал среды как разработчика, так и сборки.

0 голосов
/ 07 декабря 2018

Папка пакетов, использующая структуру packages\PackageId.Version\ Я считаю, что это фид "v2", тогда как packages\packageid\version\ это фид "v4".Когда NuGet добавляет пакеты к каналу, он пытается определить версию канала перед добавлением новых пакетов и по умолчанию использует каналы V2 для проектов packages.config.Папка с глобальными пакетами всегда должна быть V4, но проекты packages.config восстанавливаются в папку пакетов решений, обычно это V2.

Так что я предполагаю, что ваше решение имеет проекты packages.config, но папка пакетов решенийне пустой на сервере сборки, и NuGet определяет его как ленту v4, а не ленту v2.

Я предлагаю убедиться, что папка с пакетами решений указывает на папку в вашем репо.Установка для него что-то вроде .. \ packages, чтобы избежать репо, означает, что существует повышенный риск других сборок, которые запускаются на агенте сборки, прежде чем ваша сборка повлияет на вас.Кроме того, ваш сценарий сборки может удалить папку пакетов решений перед выполнением восстановления, чтобы убедиться, что все, что уже есть, не окажет негативного влияния на вашу сборку.

Если эти предложения не помогут, было бы полезнознать, какая версия nuget используется на сервере сборки, а какая используется на локальном компьютере.

...