VSTS:nuget.exe 失败,代码为 return:1 个包无法恢复

VSTS: nuget.exe failed with return code: 1 Packages failed to restore

我是 Visual Studio 2017 年的新人,正在尝试使用 Visual Studio Team Services 进行构建。我收到以下错误:

System.AggregateException: One or more errors occurred. ---> NuGet.Protocol.Core.Types.FatalProtocolException: Failed to retrieve information about 'Microsoft.AspNetCore' from remote source 'http://nuget.ohyeah.net/api/v2/FindPackagesById()?id='Microsoft.AspNetCore''. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The remote name could not be resolved: 'nuget.ohyeah.net'

我在谷歌上搜索以确保我知道为什么会发生这个错误,但还没有成功。可以在此处找到示例堆栈跟踪:https://pastebin.com/RiGmd7Cd

可能是什么原因,是因为Nuget.Config中的某些设置吗?它看起来完全像下面:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <disabledPackageSources />
  <packageSources>
    <add key="3rdparty" value="http://nuget.XXX.net/api/v2/" />
    <add key="official" value="http://nuget.XXX.net/api/v2/" />
      <add key="vsts-official" value="https://XXXXXX.pkgs.visualstudio.com/_packaging/Official/nuget/v3/index.json" />
    <!--<add key="local" value="C:\inetpub\wwwroot\Packages" />-->
    <add key="microsoft" value="https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/" />
    <add key="nuget.org" value="" />
  </packageSources>
</configuration>

我被困在这个问题上,任何帮助将不胜感激。

您似乎在某处配置了包源。在 VSTS 或 Nuget.Config 中。根据日志,您有一个自定义源“http://nuget.ohyeah.net/”,它不是有效的 nuget 提要。如果您有更多关于您的配置的详细信息,将更容易提供帮助。

首先,检查 nuget.ohyeah.net 是否可以从构建代理访问。

其次,您需要检查Nuget.config文件是否https://api.nuget.org/v3/index.json在包源中,如果没有添加:

<packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
  1. 项目根文件夹(如果存在)
  2. 如果您在 NuGet 恢复任务中指定了 Nuget 配置文件
  3. 在构建代理 (%appdata%\Nuget) 上构建服务用户文件夹

顺便说一句,您提供的代码不是 Nuget.Config,它是 NuGet 包文件。

问题是将旧的 TFS xml 格式的资源和 json 格式的 VSTS 资源混合在一起。因此,在这个特定问题中,VSTS 将始终在 json 文件中查找要匹配的 id 以匹配 nuget 包,然后 VSTS 将尝试检索 nuget 包。如果您有旧的 TFS nuget 存储库,则必须在 json 文件中创建一个条目。就我而言,我不得不从 Nuget.Config 中删除旧的 TFS packageSources,例如 http://nuget.XXX.net/api/v2/。此外,您需要在新的 json 文件中创建一个有效的 @id@type 字典条目,在我的例子中是:https://XXXXXX.pkgs.visualstudio.com/_packaging/Official/nuget/v3/index.json。现在,工作版本如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <disabledPackageSources />
  <packageSources>
      <add key="vsts-official" value="https://XXXXXX.pkgs.visualstudio.com/_packaging/Official/nuget/v3/index.json" />
    <add key="microsoft" value="https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/" />
    <add key="nuget.org" value="" />
  </packageSources>
</configuration>

解决此问题的最简单方法是更改​​ NuGet 包的版本,如下所示。当 NuGet 恢复搜索 V 3.3.0 时,我遇到了同样的问题。它就在那里,我用它来托管代理。我发现这对我有用。