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

问题描述 投票:0回答:3

任何基于

packages
csproj
的 .NET Core 项目中都不再有
project.json
解决方案文件夹。

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

nuget locals all -list

回应:

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

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

visual-studio .net-core visual-studio-2017 nuget
3个回答
71
投票

UPD 2024:所有独立的

nuget
命令均替换为
dotnet nuget
CLI。提供的信息与 VS2022 和 .NET 8 相关。

缓存位置

.NET Core 和 Visual Studio

不再使用解决方案本地包文件夹。列出用户特定文件夹的命令是:

dotnet nuget locals all --list
及其典型输出(我用变量替换了绝对路径并对其进行了美化):

global-packages: %USERPROFILE%\.nuget\packages http-cache: %$LOCAL_APPDATA%\NuGet\v3-cache temp: %$LOCAL_APPDATA%\Temp\NuGetScratch plugins-cache: %$LOCAL_APPDATA%\NuGet\plugins-cache
请注意,计算机范围的文件夹未在此处列出。但是,它是在 Visual Studio 设置中定义的:选项 -> NuGet 包管理器 -> 包源。默认情况下是:

C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
在包源中,您可以根据需要添加/删除任意多个缓存位置。

配置文件

NuGet.config

 文件
位于此处

    用户特定:
  • %APPDATA%\NuGet\
    
    
  • 全机:
  • %ProgramFiles(x86)%\NuGet\Config\
    
    
任何

NuGet.config

 设置都可以在多个级别(项目、解决方案、用户、机器)被覆盖。在此处阅读有关 
NuGet.config
 分层优先级排序的更多信息:
如何应用设置

例如,

globalPackagesFolder

参数更改包缓存位置:

<?xml version="1.0" encoding="utf-8"?> <configuration> <config> <clear /> <add key="globalPackagesFolder" value="c:\packages" /> </config> </configuration>
    

12
投票
来自

MS 文档

全局包

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

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


0
投票
将 .nuget 文件夹 (c:\users{username}.nuget) 从具有互联网连接和更新包的开发电脑复制到没有互联网连接的电脑也对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.