当尝试在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,以防它看起来内部,也没有运气。
答案 0 :(得分:1)
带有nuget restore的TFS构建.net Core错误结束
我们知道,当我们选择选项Feeds in my NuGet.config
时,我们还需要提供Credentials for feeds outside this account/collection
:
如果我们使用从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
}