更改 Visual Studio 2017 使用的 NuGet 包文件夹
Change NuGet package folders used by Visual Studio 2017
在任何基于 csproj
或 project.json
的 .NET Core 项目中不再有 packages
解决方案文件夹。
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
如何更改或覆盖这些位置?
缓存位置
.NET Core 和 Visual Studio 2017 不再存在本地解决方案包文件夹。
NuGet is now fully integrated into MSBuild:
Solution-local packages folders are no longer used – Packages are now
resolved against the user’s cache at %userdata%.nuget, rather than a
solution specific packages folder. This makes PackageReference perform
faster and consume less disk space by using a shared folder of
packages on your workstation.
NuGet 4.0+ 使用至少两个全局包位置:
- 用户特定:
%userprofile%\.nuget\packages\
- 机器范围:
%ProgramFiles(x86)%\Microsoft SDKs\NuGetPackages\"
您可以使用以下控制台命令列出所有用户特定的文件夹:
nuget locals all -list
请注意此处未列出计算机范围的文件夹。但是,它是在 Visual Studio 设置中定义的:
Options -> NuGet Package Manager -> Package Sources
配置文件
NuGet.config
个文件 are located here:
- 用户特定:
%APPDATA%\NuGet\
- 机器范围:
%ProgramFiles(x86)%\NuGet\Config\
可以在多个级别更改和覆盖 NuGet 设置:
- 项目
- 解决方案
- 用户
- 机器
还有更多!在此处阅读有关 NuGet.config
层次优先级排序的更多信息:How settings are applied。
例如,globalPackagesFolder
参数更改包缓存位置。看看这个 NuGet.config
例子:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<clear />
<add key="globalPackagesFolder" value="c:\packages" />
</config>
</configuration>
来自MS docs:
全局包
- Windows: %userprofile%\.nuget\packages
- Mac/Linux: ~/.nuget/packages
使用 NUGET_PACKAGES 环境变量、globalPackagesFolder 或 repositoryPath 配置设置(分别使用 PackageReference 和 packages.config 时)或 RestorePackagesPath MSBuild 覆盖属性(仅限 MSBuild)。 环境变量优先于配置设置。
将 .nuget 文件夹 (c:\users{username}.nuget) 从具有互联网连接和更新包的开发电脑复制到没有互联网连接的电脑也对我有用.
在任何基于 csproj
或 project.json
的 .NET Core 项目中不再有 packages
解决方案文件夹。
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
如何更改或覆盖这些位置?
缓存位置
.NET Core 和 Visual Studio 2017 不再存在本地解决方案包文件夹。
NuGet is now fully integrated into MSBuild:
Solution-local packages folders are no longer used – Packages are now resolved against the user’s cache at %userdata%.nuget, rather than a solution specific packages folder. This makes PackageReference perform faster and consume less disk space by using a shared folder of packages on your workstation.
NuGet 4.0+ 使用至少两个全局包位置:
- 用户特定:
%userprofile%\.nuget\packages\
- 机器范围:
%ProgramFiles(x86)%\Microsoft SDKs\NuGetPackages\"
您可以使用以下控制台命令列出所有用户特定的文件夹:
nuget locals all -list
请注意此处未列出计算机范围的文件夹。但是,它是在 Visual Studio 设置中定义的:
Options -> NuGet Package Manager -> Package Sources
配置文件
NuGet.config
个文件 are located here:
- 用户特定:
%APPDATA%\NuGet\
- 机器范围:
%ProgramFiles(x86)%\NuGet\Config\
可以在多个级别更改和覆盖 NuGet 设置:
- 项目
- 解决方案
- 用户
- 机器
还有更多!在此处阅读有关 NuGet.config
层次优先级排序的更多信息:How settings are applied。
例如,globalPackagesFolder
参数更改包缓存位置。看看这个 NuGet.config
例子:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<clear />
<add key="globalPackagesFolder" value="c:\packages" />
</config>
</configuration>
来自MS docs:
全局包
- Windows: %userprofile%\.nuget\packages
- Mac/Linux: ~/.nuget/packages
使用 NUGET_PACKAGES 环境变量、globalPackagesFolder 或 repositoryPath 配置设置(分别使用 PackageReference 和 packages.config 时)或 RestorePackagesPath MSBuild 覆盖属性(仅限 MSBuild)。 环境变量优先于配置设置。
将 .nuget 文件夹 (c:\users{username}.nuget) 从具有互联网连接和更新包的开发电脑复制到没有互联网连接的电脑也对我有用.