Вопрос по 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:\<localpath>\.nuget\nuget.targets(80,9): error : Unable to find version '2.0.1.0' of package '<packageName>'.
c:\<localpath>\.nuget\nuget.targets(80,9): error MSB3073: The command ""c:\<localpath>\.nuget\nuget.exe" install "c:\<localpath>\packages.config" -source ""  -RequireConsent -o "c:\<localpath>\packages"" exited with code 1.

Когда я смотрю на код NuGet, а также декомпиляцию nuget.exe, чтобы найти строку"Unable to prompt for credentials. Consult NuGet's help documentation for ways to specify credentials" Я вижу это там, но, честно говоря, я не могу определить, кто использует это сообщение об ошибке.

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

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

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

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

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

UPDATE 9/18/2012

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

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

Ваш Ответ

1   ответ
6

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

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

Это правильный способ сделать это. Предостережение заключается в том, что при запуске обновления источника & quot; nuget.exe & quot; Команда nuget.exe будет искать файл NuGet.config в том же каталоге, что и исполняемый файл nuget.exe, если он существует.IF он существует, он будет хранить изменения там. Если это такNOT существует, он будет хранить изменения в файле NuGet.config, расположенном в каталоге% AppData% \ NuGet.

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

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

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

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