使用TFS在托管构建服务器上的nuget包文件夹在哪里?

时间:2017-01-10 01:46:21

标签: azure-devops continuous-deployment

我需要从TFS构建过程中作为nuget包还原的一部分下载的包中执行命令行实用程序。

在我的本地计算机上存储在c:\ users \ me.nuget *

我已经尝试过对TFS的每一种排列都没有成功。我也试过\ mydir \ packages也没有成功。

最大的问题是我必须运行包恢复步骤才能从日志中看到任何类型的反馈。这是一些缓慢的调试。

有什么想法吗?谢谢。

3 个答案:

答案 0 :(得分:4)

使用最新的nuget / msbuild,packages文件夹保存在活动用户的配置文件目录下,因此适当的Powershell命令

Get-ChildItem $(UserProfile)\.nuget\packages 

这当前评估VSTS 2017托管构建代理到C:\ Users \ VssAdministrator \ .nuget \ packages,但是使用变量来隔离所做的任何更改。

答案 1 :(得分:1)

Nuget包缓存文件夹位于C:\ Users \ buildguest.nuget \ packages中,但如果您使用的是Hosted构建服务器,则会在构建后清除它。 验证的简单方法:

  1. 添加NuGet还原或.Net Core Restore构建步骤以还原包
  2. 添加PowerShell构建步骤以列出C:\ Users \ buildguest.nuget \ packages中的文件
  3. 代码:

    Get-ChildItem -Path C:\Users\buildguest\.nuget\packages
    
    1. 队列构建并检查PowerShell步骤日志(软件包将在日志中列出)
    2. 删除/禁用NuGet还原或.Net Core Restore构建步骤>保存构建定义
    3. 队列构建
    4. 构建将失败,因为路径不存在。
    5. 因此,如果不存在,则需要在构建解决方案/项目之前恢复软件包。您可以将包添加到源代码控制并映射到构建代理,以解决恢复包的时间过长的问题。

答案 2 :(得分:1)

只是@Paul Hatcher的回答的补充:

我在Azure DevOps构建管道中也遇到了相同的问题,在该管道中找不到特定的包和nuget包目录。 这是一个基于Xamarin.Forms库的.net standard应用,其中没有packages文件夹。后来我在构建日志中注意到,这些软件包已还原到用户配置文件下的nuget文件夹中。但是,https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=vsts#agent-variables上没有记录这种特殊情况。

enter image description here

这意味着,如果您尝试直接从构建管道中引用nuget软件包文件夹,则@Paul Hatcher的答案同样有效。 ($(UserProfile).nuget \ packages)实际上应该是(标准)预定义的构建变量。