dotnet new --install смотрит на неправильный сервер NuGet
Бег:
dotnet new --install Microsoft.AspNetCore.SpaTemplates::*
Генерирует следующую ошибку:
C:\Program Files (x86)\dotnet\sdk\1.0.4\Nuget.targets(97,5): error : Unable to laod the service index for source https://MYNugetFeed.pkgs.visualstudio.com/_packaging/Project/nuget/v3/index.json. \r [C:\Users\me\.templateengine\dotnetcli\v1.0.4\scratch\restore.csproj]
C:\Program Files (x86)\dotnet\sdk\1.0.4\NuGet.targets(97,5): error : Response status code does not indicate success: 401 (Unauthorized).
Итак, мои вопросы: почему он смотрит на этот канал NuGet, а не на стандарт (при условии, что именно там находятся эти шаблоны), и как мне изменить конфигурацию для dotnet cli? Я знаю, что это каким-то образом связано с окружающей средой.
2 ответа
Похоже, ваш компьютер имеет глобальную конфигурацию nuget, которая указывает на этот канал. Вы можете изменить это поведение для определенного каталога и его дочерних элементов, создав новый файл nuget.config.
Вы можете узнать, как локальные файлы переопределяют глобальные, на странице " Настройка поведения Nuget" в документации по Nuget.
причина
Когда вы настраиваете серверы NuGet в Visual Studio (и, возможно, другие инструменты), они сохраняются для каждого пользователя в NuGet.config. Dotnet new -install
пытается использовать их. К сожалению, один из моих серверов nuget (Telerik) требует проверки подлинности, и он не прошел так сильно, что остановил все остальные источники даже от попыток.
Решение
На Windows 10 и 8.* вы можете найти NuGet.Config здесь:
Идти к C:\Users\[User Name]\AppData\Roaming\NuGet\NuGet.Config
Под <packageSources>
будет список серверов, например:
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="REDACTED" value="http://REDACTED:8080/guestAuth/app/nuget/v1/FeedService.svc/" />
<add key="REDACTED" value="http://REDACTED/nuget" />
<add key="Telerik (Kendo)" value="https://nuget.telerik.com/nuget" />
</packageSources>
Чтобы заставить это работать, я сократил это до основного сервера nuget.org:
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
... А потом начала работать установка шаблона.
По-видимому, у меня была та же проблема, с которой столкнулся Брайан Маккей с Telerik. Однако я активно работаю над проектом, которому нужен исходный код Telerik, поэтому мне не хотелось удалять все из своего Nuget.Config.
Однако, указав в команде конкретный источник nuget, я смог установить желаемые шаблоны - в моем случае шаблоны IdentityServer4. Итак, эта команда сработала:
dotnet new -i IdentityServer4.Templates --nuget-source https://api.nuget.org/v3/index.json
Предполагая, что OP правильный и упомянутые шаблоны находятся в стандартном реестре Nuget, я полагаю, что аналогичный вызов будет работать и там.