更改Visual Studio 2017使用的NuGet包文件夹

Ily*_*kov 29 nuget .net-core visual-studio-2017

有没有更多的packages在任何解决方案的文件夹csprojproject.json基于.NET的核心工程.

NuGet CLI获取使用的缓存文件夹列表:

nuget locals all -list
Run Code Online (Sandbox Code Playgroud)

响应:

http-cache: C:\Users\<foo>\AppData\Local\NuGet\v3-cache
global-packages:  C:\Users\<foo>\.nuget\packages\
temp: C:\Users\<foo>\AppData\Local\Temp\NuGetScratch
Run Code Online (Sandbox Code Playgroud)

如何更改或覆盖这些位置?

Ily*_*kov 54

缓存位置

.NET Core和Visual Studio 2017不再存在解决方案本地包文件夹.

NuGet现已完全集成到MSBuild中:

不再使用解决方案本地包文件夹 - 现在针对%userdata%.nuget的用户缓存解析包,而不是解决方案特定的包文件夹.这使得PackageReference的执行速度更快,并且通过在工作站上使用包的共享文件夹来减少磁盘空间.

NuGet 4.0+至少使用两个全局包位:

  • 特定于用户: %userprofile%\.nuget\packages\
  • 机宽: %ProgramFiles(x86)%\Microsoft SDKs\NuGetPackages\"

您可以使用以下控制台命令列出所有特定于用户的文件夹:

nuget locals all -list
Run Code Online (Sandbox Code Playgroud)

请注意,此处未列出计算机范围的文件夹.但是,它是在Visual Studio设置中定义的:

Options -> NuGet Package Manager -> Package Sources
Run Code Online (Sandbox Code Playgroud)

配置文件

NuGet.config文件位于:

  • 特定于用户: %APPDATA%\NuGet\
  • 机宽: %ProgramFiles(x86)%\NuGet\Config\

可以在多个级别更改和覆盖NuGet设置:

  • 项目
  • 用户

还有更多!NuGet.config在此处详细了解分层优先级排序:如何应用设置.

例如,globalPackagesFolder参数更改包缓存位置.看看这个NuGet.config例子:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <clear />
    <add key="globalPackagesFolder" value="c:\packages" />
  </config>
</configuration>
Run Code Online (Sandbox Code Playgroud)


Mic*_*rst 7

MS 文档

全局?包

  • Windows:%userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packages

使用NUGET_PACKAGES环境变量、globalPackagesFolder 或 repositoryPath 配置设置(分别使用 PackageReference 和 packages.config 时)或 RestorePackagesPath MSBuild 属性(仅限 MSBuild)覆盖。环境变量优先于配置设置。