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

dotnet new --install is looking at wrong NuGet server

运行:

dotnet new --install Microsoft.AspNetCore.SpaTemplates::*

生成以下错误:

C:\Program Files (x86)\dotnet\sdk.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.0.4\NuGet.targets(97,5): error : Response status code does not indicate success: 401 (Unauthorized).

所以我的问题是为什么它查看的是 NuGet 提要而不是标准(假设这是这些模板所在的位置)以及如何更改 dotnet cli 的配置?我知道这在某种程度上与环境有关。

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

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

原因

当您在 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>

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

我大概遇到了 Brian MacKay 遇到的与 Telerik 相同的问题。但是,我正在积极开展一个需要 Telerik 源代码的项目,所以我不想从我的 Nuget.Config

中删除所有内容

但是,通过在命令中指定特定的 nuget 源,我能够安装所需的模板 - 在我的例子中是 IdentityServer4 模板。所以这个命令起作用了:

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

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