【问题标题】:TFS Nuget Restore step cannot access proxyTFS Nuget 还原步骤无法访问代理
【发布时间】:2018-09-05 07:39:10
【问题描述】:

我们最近升级到 TFS 2017,我正在尝试将我们现有的构建从基于 XAML 的构建转换到新的构建系统。这一切都在公司防火墙之后。

我的测试项目 (dotNet Core) 因错误而失败...

Assets file '<snip>project.assets.json' not found. Run a NuGet package restore to generate this file. 

...所以我在构建中添加了一个 Nuget 还原步骤。这导致构建日志中出现以下错误...

<snip>
Starting: NuGet restore   
**************************************************************************
==========================================================================
Task         : NuGet Restore
Description  : Restores NuGet packages in preparation for a Visual Studio 
Build step.
Version      : 1.0.1
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?
LinkID=613747)
==========================================================================
C:\Windows\system32\chcp.com 65001
Active code page: 65001 

...在这里等待 30 秒...

connect ETIMEDOUT 117.18.232.200:443
**************************************************************************
Finishing: NuGet restore
<snip>

但是,与 Fiddler 和网络人员核实后,在显示的时间点等待大约 30 秒时,盒子中没有(相关的)网络活动。

显然,Nuget 还原步骤正在尝试访问 Internet,但由于它无法访问代理(我们在最初设置构建服务器时遇到了类似的问题)而不是它被阻止,这将显示在网络日志。

如果我远程到构建服务器并使用与构建服务相同的凭据登录,我可以成功地使用 VS 在盒子上构建测试项目,但显然是使用 IDE 配置文件来访问代理。我已经在 devenv.exe.config 和 %appdata%\NuGet\NuGet.Config 中配置了代理。

谁能建议我可以在哪里设置它,以便 Nuget 还原步骤可以找到并使用它?

【问题讨论】:

    标签: tfs continuous-integration nuget


    【解决方案1】:

    在您的构建代理机器上尝试以下步骤:

    • 下载命令行版本的nuget
    • 将其添加到路径 env var
    • nuget.exe 配置-设置 http_proxy=http://proxy:port
    • nuget.exe 配置-设置 http_proxy.user=域\用户名
    • nuget.exe 配置-设置 http_proxy.password=myPassword

    更新:

    project.assets.json 文件在使用 PackageReference 管理格式时维护项目的依赖关系图,用于确保在计算机上安装所有必要的包。由于此文件是通过包还原动态生成的,因此通常不会将其添加到源代码管理中。因此,当使用 msbuild 等不会自动恢复包的工具构建项目时会出现此错误。

    在这种情况下,运行msbuild /t:restore,然后运行msbuild,或使用dotnet build(自动恢复包)。

    更多详情,请参考以下链接: https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore-troubleshooting

    【讨论】:

    • 遗憾的是这不起作用,它只是更新了我已经在 %appdata%\NuGet\NuGet.Config 更新的同一个文件
    • 我实际上不确定它想要什么包,但我希望我能登录,这只是远程触发构建的问题。如果我在没有 nuget 还原的情况下运行构建,我会得到“...project.assets.json' not found。运行 NuGet 包还原以生成此文件。”错误。这就是我试图真正解决的问题,但无济于事。我将拨打高级支持电话,不妨使用我们可以访问的服务。 ;-)
    • 尝试在 nuget restore 任务之前添加NuGet Tool Installer 任务以使用 NuGet 4.3.0。
    • 感谢您继续尝试提供帮助。不幸的是,我也尝试过,但它遇到了同样的问题,错误非常相似 - 两个任务似乎都无法找到代理设置,因此无法访问网。
    • 哦,你这个燃烧的英雄!!!做到了。通过在构建定义的构建解决方案步骤中将 /t:restore 开关添加到 msbuild 参数,它起作用了!!!非常感谢你。显然,我现在有一大堆其他测试要运行,以确保一切正常,但是……耶!我唯一的遗憾是,在花了两个多小时将所有内容汇总起来发送给 Premier Support 以处理我记录的通话之前,我没有看到您的更新回复。嗯,小成本。再次感谢。
    猜你喜欢
    • 2023-03-04
    • 2019-02-02
    • 2018-07-08
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    相关资源
    最近更新 更多