使用 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,但如果您使用托管构建服务器,它会在构建后被清除。
简单验证方式:
- 添加 NuGet 恢复或 .Net Core 恢复构建步骤来恢复包
- 添加 PowerShell 构建步骤以列出 C:\Users\buildguest.nuget\packages
中的文件
代码:
Get-ChildItem -Path C:\Users\buildguest\.nuget\packages
- 排队构建并检查 PowerShell 步骤日志(包将在日志中列出)
- Remove/disable NuGet 恢复或 .Net Core 恢复构建步骤 > 保存构建定义
- 队列构建
- 构建将失败,因为路径不存在。
因此,如果软件包不存在,则需要在构建之前恢复 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) 实际上应该是一个(标准的)预定义构建变量。
我需要从作为 TFS 构建过程中 nuget 包还原的一部分下载的包中执行命令行实用程序。
在我的本地计算机上,存储在 c:\users\me.nuget*
我已经在 TFS 上尝试了所有排列,但都没有成功。我也试过 \mydir\packages 也没有成功。
最大的问题是我必须 运行 包恢复步骤才能从日志中看到任何类型的反馈。这是一些缓慢的调试。
有什么想法吗?先谢谢了。
Nuget 包缓存文件夹位于 C:\Users\buildguest.nuget\packages,但如果您使用托管构建服务器,它会在构建后被清除。 简单验证方式:
- 添加 NuGet 恢复或 .Net Core 恢复构建步骤来恢复包
- 添加 PowerShell 构建步骤以列出 C:\Users\buildguest.nuget\packages 中的文件
代码:
Get-ChildItem -Path C:\Users\buildguest\.nuget\packages
- 排队构建并检查 PowerShell 步骤日志(包将在日志中列出)
- Remove/disable NuGet 恢复或 .Net Core 恢复构建步骤 > 保存构建定义
- 队列构建
- 构建将失败,因为路径不存在。
因此,如果软件包不存在,则需要在构建之前恢复 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) 实际上应该是一个(标准的)预定义构建变量。