Azure devops: ошибка NU1101: невозможно найти пакет xxx.В источнике (ах) нет пакетов с этим идентификатором: nuget.org - PullRequest
3 голосов
/ 19 июня 2019

У меня есть пакет, который я отправляю в частную ленту новостей. Затем несколько других проектов ссылаются на эти пакеты. Все хорошо, кроме случаев, когда я указываю подстановочный знак, который работает только в vs, но, видимо, не при восстановлении с помощью сборки azure devops:

это работает:

<PackageReference Include="MyLibPackage" Version="1.0.0.114" />

но я получаю ошибку unable to find package:

<PackageReference Include="MyLibPackage" Version="*" />

Фрагмент файла Docker, который запускает задача восстановления в Azure Devops:

# Install the Credential Provider to configure the access
RUN wget -qO- https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh | bash

# Configure the environment variables
ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS "{\"endpointCredentials\": [{\"endpoint\":\"$feed\", \"password\":\"$pat\"}]}"

WORKDIR /src

COPY ["MyProject/MyProject.csproj", "MyProject/"]

RUN dotnet restore -s "$feed" "MyProject/MyProject.csproj"

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Azure devops: ошибка NU1101: невозможно найти пакет xxx.В источнике (ах) не существует пакетов с этим идентификатором: nuget.org

У меня нет большого опыта работы с Docker, я не уверен, происходит ли эта проблема из-за восстановления docker-контейнера или dotnet.

Но так как вы сказали в комментарии:

В основном все, кроме жесткого номера версии, терпят неудачу.

Итак, я хотел бы предоставить обходной путь , чтобы решить эту проблему, вы можете проверить, работает ли он для вас:

Поскольку нам нужно использовать номер аппаратной версии, мы могли бы добавить еще одну команду для обновления пакета до последней версии,командную строку, подобную следующей:

RUN dotnet add package MyLibPackage -s "$feed"

И установите WORKDIR в файле Docker, где находится файл проекта.

@ Elger Mensonides, Спасибо за вклад Elger за правильную командную строку.

Если мы не укажем версию в командной строке, она добавит в проект последний пакет.

Проверьте документ CLI dotnet - как обновить пакет NuGet идобавьте новый пакет NuGet для некоторых деталей.

Надеюсь, это поможет.

0 голосов
/ 19 июня 2019

Я предлагаю использовать обычные методы решения проблем и устранить ненужные осложнения, чтобы выделить основную причину проблемы. В вашем случае возьмите докер и используйте встроенные функции Azure DevOps для восстановления и сборки. Однако в этом случае это может замаскировать проблему, поскольку задача NuGet позволяет указать исходный канал, который не отображается ни в одном файле nuget.config (задача создаст временный файл nuget.config с исходным кодом). Если вы не можете сказать, я не фанат использования Docker для сборки. Это отличная технология для запуска служб, но я видел, что слишком много людей теряют часы или дни производительности, когда они не могут заставить свои инструменты сборки работать правильно в контейнере.

В любом случае, учитывая, что список источников, приведенный в сообщении об ошибке, содержит только nuget.org, это означает, что у вас нет репозитория nuget.config в вашем репозитории, в котором указан ваш личный канал. Если вы добавили свой личный канал с помощью инструментов Visual Studio-> options-> nuget-> sources, это только изменит ваш профиль пользователя nuget.config. Это означает, что он работает только на вашем компьютере, никто другой. Вам нужно создать nuget.config и зафиксировать его в своем репо, чтобы машина CI могла его использовать. Использование dotnet new nugetconfig даст вам хороший шаблон для начала.

...