使用nuget restore的TFS构建.net Core错误结束

时间:2019-07-17 14:39:30

标签: nuget tfsbuild

当尝试在tfs上构建.net Code 2.2解决方案时,需要执行nuget restore任务。它正在尝试连接到我们的内部供稿。然后失败。在构建日志中,我们有:

  

错误:无法加载源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,以防它看起来内部,也没有运气。

2 个答案:

答案 0 :(得分:1)

  

带有nuget restore的TFS构建.net Core错误结束

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

enter image description here

如果我们使用从CredentialProvider.VSS.exe处获得的令牌,在NuGet连接窗口的“个人访问令牌”字段中,我们可能会遇到类似您的问题。我们从CredentialProvider.VSS.exe获得的令牌是短期令牌,您可以将其替换为PAT(个人访问令牌)以检查它是否对您有用。

检查this thread了解更多详细信息。

此外,如果您使用的是旧版nuget.exe,则可以使用任务NuGet Tool Installer对其进行更新。

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

希望这会有所帮助。

答案 1 :(得分:0)

最后,我们做了一个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
}