首页 > 解决方案 > 通过 dotnet CLI 更改 NuGet 包下载的默认位置

问题描述

对于 VS2019 中的 C# 控制台应用程序,我从 .NET CLI(开发人员 PowerShell)发出了以下命令:-

 dotnet add package <PackageName> --version <Version>

然后从对象浏览器中,我发现包程序集 (.dll) 已复制到以 C:\Users<userid>.nuget\packages<PackageName><Version> 开头的本地路径中。但是,如果我看到我的项目定义(.csproj 文件),我只会看到包名而不是路径:-

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="<PackageName>" Version="<Version>" />
  </ItemGroup>

</Project>

Visual Studio(或 .dotnet CLI)中决定将 NuGet 包下载到哪个本地路径的设置在哪里?

标签: c#.netnuget

解决方案


这是全局 NuGet 缓存,它是可配置的(根据下面引用的文档),但您的是默认位置

https://www.github.com/NuGet/docs.microsoft.com-nuget/tree/main/docs%2Fconsume-packages%2Fmanaging-the-global-packages-and-cache-folders.md

global-packages 文件夹是 NuGet 安装任何下载包的位置。每个包都完全展开到与包标识符和版本号匹配的子文件夹中。使用 PackageReference 格式的项目始终直接使用此文件夹中的包。使用 packages.config 时,包会安装到 global-packages 文件夹,然后复制到项目的 packages 文件夹中。

Windows:%userprofile%.nuget\packages

Mac/Linux:~/.nuget/packages

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


推荐阅读