【问题标题】:TFS build .net Core with nuget restore end in errorTFS 构建 .net Core 与 nuget 还原错误结束
【发布时间】:2019-11-26 10:38:37
【问题描述】:

在尝试构建 tfs 时,.net Code 2.2 解决方案有一个 nuget 恢复任务。它正在尝试连接到我们的内部提要。然后它失败了。在我们的构建日志中:

错误:无法加载源 http://internalSource/index.json 的服务索引。 [D:\dummy.csproj]

错误:安全包 [D:\dummy.csproj] 中没有可用的凭据

查看 TFS 生成的文件,它没有使用我们在解决方案中声明的凭据。 我们的 nuget.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <!-- Allow NuGet to download missing packages -->
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <clear />
    <add key="PackageSTN" value="http://internal/index.json" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <packageSourceCredentials>
    <PackageSTN>
        <add key="Username" value="user" />
        <add key="Password" value="pwd" />
    </PackageSTN> 
  </packageSourceCredentials>
</configuration>

构建提供给我们的 TFS 上的那个:

<configuration>
  <packageRestore>
    <add key="enabled" value="True"/>
    <add key="automatic" value="True"/>
  </packageRestore>
  <packageSources>
    <clear/>
  <add key="PackageSTN" value="http://internal/index.json"/></packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)"/>
  </activePackageSource>
    <packageSourceCredentials>       
        <PackageSTN>
            <add key="Username" value="VssSessionToken"/>
            <add key="ClearTextPassword" value="Too Big to be display"/>
        </PackageSTN>
    </packageSourceCredentials>
</configuration>

似乎它正在尝试使用一些VssSessionToken TFS 帐户登录。

此外,我们将服务器上的 %APPDATA% nuget.config 替换为带有我们凭据的那个,以防它查看内部,但运气不好。

【问题讨论】:

    标签: nuget tfsbuild


    【解决方案1】:

    TFS 构建 .net Core 时 nuget 恢复以错误结束

    众所周知,当我们选择Feeds in my NuGet.config选项时,我们还需要提供Credentials for feeds outside this account/collection

    如果我们在 NuGet 连接窗口的“个人访问令牌”字段中使用从CredentialProvider.VSS.exe 获得的令牌,我们可能会遇到像您这样的问题。我们从CredentialProvider.VSS.exe 获得的令牌是一个短暂的令牌,您可以将其替换为 PAT(个人访问令牌)来检查它是否适合您。

    查看this thread了解更多详情。

    另外,如果您使用的是旧的 nuget.exe,您可以使用任务NuGet Tool Installer 来更新它。

    如果以上内容对您没有帮助,请分享您关于 nuget 恢复任务的构建定义以及如何为该帐户/集合之外的提要添加凭据的步骤。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答,我们刚刚尝试了您使用 PAT 令牌提出的建议,以及在基本身份验证选项卡中使用凭据,结果仍然相同。当您询问构建定义时,您的意思是 json ?
    • @SylvainLucas,有关您的 nuget 恢复任务的构建定义的屏幕截图,删除您的个人信息。
    • 终于搞定了,看我的其他回答,我明天标记为已解决,感谢您的时间
    • @SylvainLucas,不客气:)。很抱歉没有在第一时间给你最准确的答复。谢谢你的分享。
    【解决方案2】:

    最后我们做了一个 powershell 脚本来绕过这个:/

    try
    {
        $solutionSln = $env:BUILD_SOURCESDIRECTORY + $env:solutionSln
        $nugetConfig = $env:BUILD_SOURCESDIRECTORY + $env:nugetConfig
    
        Write-Host "dotnet restore $solutionSln --configfile  $nugetConfig --verbosity Detailed --no-cache"
        dotnet restore $solutionSln --configfile  $nugetConfig --verbosity Detailed --no-cache
    }
    catch {
        Write-Host $_
        exit 1
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 2017-08-16
      • 2018-08-29
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多