从 TFS 2015 尝试从私人提要恢复包时出错
Posted
技术标签:
【中文标题】从 TFS 2015 尝试从私人提要恢复包时出错【英文标题】:Getting error from TFS 2015 trying to restore packages from a private feed 【发布时间】:2020-06-15 00:14:35 【问题描述】:我们有一个本地 TFS 2015 构建。我们最近添加了对 3rd 方包的引用。我在MSBUILD
步骤之前向我们的构建管道添加了一个nuget restore
构建步骤来恢复包。
这是nuget restore
构建任务
这是MSBUILD
步骤
我得到的错误信息是这样的。
Failed to retrieve information about 'myPrivatePackage' from remote source 'https://nuget.myPrivatePackage.com/nuget/FindPackagesById()?id='myPrivatePackage'&semVerLevel=2.0.0'.
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
这是构建输出日志。
更新
这是 nuget 还原步骤的详细 TFS 构建日志输出。
Task "RestoreTask"
(in) RestoreGraphItems Count '19'
(in) RestoreDisableParallel 'False'
(in) RestoreNoCache 'True'
(in) RestoreIgnoreFailedSources 'False'
(in) RestoreRecursive 'True'
(in) RestoreForce 'False'
(in) HideWarningsAndErrors 'False'
(in) RestoreForceEvaluate 'False'
Running restore with 4 concurrent jobs.
Reading project file E:\TfsData\Build\_work\4\s\OscarWeb\OscarWeb.csproj.
Reading project file E:\TfsData\Build\_work\4\s\OscarWeb\OscarWeb.csproj.
Persisting no-op dg to E:\TfsData\Build\_work\4\s\OscarWeb\obj\OscarWeb.csproj.nuget.dgspec.json
Restoring packages for E:\TfsData\Build\_work\4\s\OscarWeb\OscarWeb.csproj...
Restoring packages for E:\TfsData\Build\_work\4\s\OscarWeb\OscarWeb.csproj...
Restoring packages for .NETCoreApp,Version=v2.2...
Restoring packages for .NETCoreApp,Version=v3.1...
GET https://www.nuget.org/api/v2/FindPackagesById()?id='BuildBundlerMinifier'&semVerLevel=2.0.0
GET https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.VisualStudio.Web.CodeGeneration.Tools'&semVerLevel=2.0.0
Retrying 'FindPackagesByIdAsyncCore' for source 'https://nuget.telerik.com/nuget/FindPackagesById()?id='BuildBundlerMinifier'&semVerLevel=2.0.0'.
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
任何想法是什么导致了错误以及如何解决它?
【问题讨论】:
【参考方案1】:根据您的屏幕截图。我注意到的一个问题是 MSBuild 任务正在执行还原。它不应该。让 Nuget 任务执行 NuGet 还原。
建议转到构建任务的高级选项并取消选中“恢复 NuGet 包”,或者如果您在构建期间通过其他方式调用 NuGet 恢复,请将其关闭。
如果这不起作用,请将变量 system.debug=true
设置为 Enable Verbose Debug Mode for TFS Build vNext。这可能会为故障排除提供更多详细信息。
【讨论】:
当我尝试时收到以下错误消息:“找不到资产文件 'MyProject\obj\project.assets.json'。运行 NuGet 包还原以生成此文件。” 嗨 DomBurf,根据您的错误消息,您的 Nuget 安装任务似乎根本没有恢复包。如果您的构建服务帐户访问该私人提要并下载文件,您可以检查 Nuget 安装任务的日志。如果不是,这可能是根本原因。如果您的构建服务帐户有足够的权限/访问私人提要,那么您可以尝试缩小范围。还要检查网络是否阻止您的构建代理到私人提要 url 以下载软件包。 我在构建步骤中禁用了“恢复”,但仍然收到完全相同的错误消息。 我已经通过使用“dotnet restore”而不是“nuget restore”来实现它 @DomBurf 很高兴听到这个消息,您可以在这里分享您的解决方案作为答案,然后标记您的回复,这也将有助于社区中的其他人。【参考方案2】:我已经设法通过使用dotnet restore
命令而不是nuget restore
来完成这项工作。
dotnet restore "MyProject.csproj" --configfile "nuget.config" --verbosity detailed --packages "rootfolder\packages" --no-cache
我的第 3 方包现在正在作为构建管道的一部分正确恢复。
【讨论】:
以上是关于从 TFS 2015 尝试从私人提要恢复包时出错的主要内容,如果未能解决你的问题,请参考以下文章
powershell 从TFS提要下载所有NuGet包的脚本
VS 中NuGet 尝试还原程序包时出错"*"已拥有为"**"定义的依赖项