dotnet new --install正在查看错误的NuGet服务器

时间:2017-06-12 20:32:42

标签: nuget visual-studio-2017 dotnet-cli

运行:

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的配置?我知道这在某种程度上与环境有关。

3 个答案:

答案 0 :(得分:3)

<强>原因

在Visual Studio(以及其他工具)中设置NuGet服务器时,它们将在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>

...然后模板安装开始工作。

答案 1 :(得分:2)

听起来您的计算机具有指向该Feed的全局nuget配置。您可以通过创建新的nuget.config文件来更改特定目录及其子项的行为。

您可以在Nuget文档的Configuring Nuget Behavior page上了解本地文件如何覆盖全局文件。

答案 2 :(得分:2)

我大概也遇到了布莱恩·麦凯(Brian MacKay)在Telerik身上遇到的相同问题。但是,我正在积极地工作一个需要Telerik源代码的项目,因此我不希望从Nuget.Config中删除所有内容

但是,通过在命令中指定特定的nuget源,我能够安装所需的模板-在我的情况下为IdentityServer4模板。因此,此命令有效:

dotnet new -i IdentityServer4.Templates --nuget-source https://api.nuget.org/v3/index.json

假设OP是正确的,并且提到的模板在标准的Nuget注册表中,那么我想在那里可以进行类似的调用。