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

Where is the nuget packages folder located on a hosted build server using TFS?

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

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

我已经在 TFS 上尝试了所有排列,但都没有成功。我也试过 \mydir\packages 也没有成功。

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

有什么想法吗?先谢谢了。

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

  1. 添加 NuGet 恢复或 .Net Core 恢复构建步骤来恢复包
  2. 添加 PowerShell 构建步骤以列出 C:\Users\buildguest.nuget\packages
  3. 中的文件

代码:

Get-ChildItem -Path C:\Users\buildguest\.nuget\packages
  1. 排队构建并检查 PowerShell 步骤日志(包将在日志中列出)
  2. Remove/disable NuGet 恢复或 .Net Core 恢复构建步骤 > 保存构建定义
  3. 队列构建
  4. 构建将失败,因为路径不存在。

因此,如果软件包不存在,则需要在构建之前恢复 solution/project。您可以将包添加到源代码管理并映射到构建代理,以解决恢复包时间过长的问题。

最新的 nuget/msbuild 包文件夹位于活动用户的配置文件目录下,因此适当的 Powershell 命令是

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

这目前在 VSTS 2017 托管生成代理上对 C:\Users\VssAdministrator\.nuget\packages 进行评估,但通过使用该变量,您可以避免所做的任何更改。

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

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

上没有记录这种特殊情况

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