Вопрос по nuget – Восстановление пакета NuGet Невозможно запросить учетные данные с помощью пользовательского канала

6

Я включил восстановление пакета NuGet в своем решении. Я использую nuget.exe версии 2.0.30828.5. Для пакетов, которые находятся в обычной общедоступной ленте, NuGet Package Restore работает нормально. То есть если в "нет ничего"Пакеты» каталог и мой локальный кеш NuGet (C: \ Users \ {username} \ AppData \ Local \ NuGet \ Cache) понятны, NPR работает отлично.

Однако, когда мы пытаемся использовать NPR для пакета в нашем пользовательском фиде (пользовательский фид имеет обычную аутентификацию), мы получаем следующее:

EXEC : warning : Unable to prompt for credentials. Consult NuGet's help documentation for ways to specify credentials.
c:\\.nuget\nuget.targets(80,9): error : Unable to find version '2.0.1.0' of package ''.
c:\\.nuget\nuget.targets(80,9): error MSB3073: The command ""c:\\.nuget\nuget.exe" install "c:\\packages.config" -source ""  -RequireConsent -o "c:\\packages"" exited with code 1.

Когда я смотрю на код NuGet, а также декомпиляцию nuget.exe, чтобы найти строку "Невозможно запросить учетные данные. Проконсультируйтесь с NuGet 'Справочная документация о способах указания учетных данных " Я вижу это там, но, честно говоря, я не могу определить, кто использует это сообщение об ошибке.

Когда мы добавляем пакет (из пользовательского интерфейса NuGet или из консоли диспетчера пакетов), он запрашивает учетные данные и работает нормально. Это только проблема при восстановлении пакета.

Я попытался запустить эту команду:

NuGet.exe source Update -Name {feedname} -UserName {myusername} -Password {mypassword}

но получает тот же результат.

Кто-нибудь знает, как я могу указать учетные данные для пользовательского канала NuGet, используя базовую аутентификацию для восстановления пакета NuGet?

ОБНОВЛЕНИЕ 18/18/2012

У меня есть обновление по этому вопросу. Я заметил, что когда я управлялОбновление источника nuget.exe ... Команда добавила раздел в файл NuGet.config, который находился в папке .nuget, локальной для моего решения. Затем я запустил procmon.exe во время сборки и заметил, что этот файл не просматривается! Вместо этого он искал файл NuGet.config вC: \ Users {имя пользователя} \ AppData \ Roaming \ NuGet» каталог. Затем я скопировал / вставил раздел из локального файла NuGet.config в файл NuGet.config в каталоге \ AppData \ Roaming \ NuGet, и это сработало!

Итак ... вопрос в том, чтоправильный лучшая практика для этого процесса?

Ваш Ответ

1   ответ
6

что я сделал, чтобы заставить его работать. Сначала появляется команда:

NuGet.exe source Update -Name {feedname} -UserName {myusername} -Password {mypassword}

Это правильный способ сделать это. Предостережение заключается в том, что когда вы запускаетеОбновление исходного кода nuget.exe " Команда nuget.exe будет искать файл NuGet.config в том же каталоге, что и исполняемый файл nuget.exe, если он существует.ЕСЛИ он существует, он будет хранить изменения там. Если это такНЕ существует, он будет хранить изменения в файле NuGet.config, расположенном в каталоге% AppData% \ NuGet.

Дополнительное предостережение заключается в том, что, когда восстановление пакета выполняется как часть сборки, онотолько просматривает файл NuGet.config в каталоге% AppData% \ NuGet и игнорирует файл NuGet.config, который находится в том же каталоге, что и выполняемый файл nuget.exe (яЯ не уверен, является ли это ошибкой или преднамеренным).

Таким образом, вы должны запустить эту команду, используя nuget.exe, который находится в каталоге, который делаетне в нем должен быть файл NuGet.config, чтобы гарантировать сохранение изменений в правильном файле NuGet.config в каталоге% AppData% \ NuGet.

Насколько я понимаю, есть также возможность предоставить файл конфигурации для Nuget.exe, так что вы можете попытаться быть более явным при вызове, чтобы он попытался использовать этот файл, но, возможно, он игнорируется некоторыми командами. dragon788

Похожие вопросы