NuGet创建两个包文件夹?

4

好的,最近我重新安装了Windows 10并升级了VS2013 -> VS2015。此时,我尝试获取一些NuGet包。

我的问题是,在与我的解决方案文件相同的级别上有一个.nuget/packages文件夹(通过NuGet.config设置),但我还在我的用户文件夹的根目录中创建了完全相同的文件夹。

我的解决方案的packages文件夹包含为该解决方案安装的软件包,而我不想要的那个文件夹包含我正在处理的所有项目和解决方案的软件包。

有没有办法防止在我的用户目录中创建此.nuget文件夹?当我已经有解决方案的包文件夹时,它似乎是无用的。

谢谢

1个回答

11

您可以清空位于用户个人资料中的.nuget\packages目录,但如果再次安装这些包,它们将会被再次下载。

包检索

%USERPROFILE%\.nuget\packages是 NuGet v3 在安装新项目类型(如通用 Windows 项目)的 NuGet 包时使用的本地计算机缓存。

对于 C# 控制台项目,NuGet 将使用%LOCALAPPDATA%\NuGet\Cache目录,这也是 NuGet v2 使用的目录。

ASP.NET Core 项目当前使用其自己的%USERPROFILE%\.dnx\packages目录来存储 NuGet 包。

指定自定义的 NuGet 包位置

为了防止 NuGet 将包复制到您的用户个人资料中,您可以创建一个新的%NUGET_PACKAGES%环境变量,指向您希望 NuGet 将文件复制到的位置,例如:C:\git-repositories\.nuget\packages

要防止 NuGet 将包复制到解决方案文件夹中,您可以在解决方案文件夹或任何更高级别的文件夹(直到根目录)中创建一个新的NuGet.config文件。您可以指定以下 XML 作为内容。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="C:\git-repositories\.nuget\packages" />
  </config>
</configuration>

为了帮助配置继承,请点击以下链接:NuGet Configuration Inheritance


有没有可能阻止NuGet将软件包复制到我的用户配置文件下的.nuget\packages目录? - Michael Mairegger
2
对于 NuGet v2,您可以指定一个名为 NuGetCachePath 的环境变量来定义全局包路径。而对于 NuGet v3,则是 NUGET_PACKAGES 环境变量。 - Matt Ward
谢谢!我已经修改了您的回答,并添加了有关覆盖自定义包位置的部分。 - Michael Mairegger
%NUGET_PACKAGES% 这个名称还正确吗?在这个链接中 https://docs.nuget.org/ndocs/consume-packages/configuring-nuget-behavior 上说应该是 %PACKAGEHOME%。 - Emil
@JohnPankowicz - 你说得对。我已经修复了路径。 - Matt Ward
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接