为什么.NET Core解决方案的包含文件夹中没有任何包文件夹?


72

软件包现在是否缓存在某个位置或其他位置上更共享的位置?

我的解决方案文件夹中没有任何packages文件夹:

没有包文件夹的解决方案文件夹


3
哦,在我添加了更多信息以使我的问题更清楚之后,我曾经如此讽刺地想知道那票是什么意思。
ProfK

Answers:


63

每个项目:References-> Nuget指示要引用和还原哪些软件包。但是,正如Eastrall所述,packages文件夹现在是全局文件夹,位于用户文件夹中:C:\Users\[YourUsername]\.nuget\packages


10
微软再次做出了如此糟糕的架构决策-我们有点回到GAC了:(-而不是容器方法...
George Anisimov

8
当然,这是一种有趣的方法。想法不像GAC那样糟糕,其想法是您的PC /用户可以缓存在许多项目和解决方案中引用的软件包集合。这是节省存储空间的增强功能。如果您从事许多项目,它实际上会有所帮助。没有“运行时解决方案”,它们只是将软件包文件夹合并到用户级别的一个软件包文件夹中。
MSC

7
1.减少nuget服务器上的负载。2.减少本地空间消耗。3.优化构建时间-请勿将任何nuget复制到bin文件夹。
乔治·阿尼西莫夫

2
@GeorgeAnisimov Dev和prod不会有什么不同,只要您对构建服务器上发布的dotnet使用“ --self-contained true”即可。我将其作为创建部署程序包的一部分进行。
汉斯·洛肯(HansLøken)'18年

2
如果需要从程序包文件夹中复制某些内容(可能需要构建活动),则最好使内容相对于sln。在这种情况下,@ CJBS方法会更好。

38

强制使用./packages文件夹进行解决

要强制将packages文件夹的下载作为.NET Core项目的解决方案文件夹的子级,请按照下列步骤操作:

  1. NuGet.Config在与文件相同的目录中创建一个.sln文件。

  2. 将以下内容复制到 NuGet.Config文件中:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="globalPackagesFolder" value=".\packages" />
  </config>
</configuration>
  1. 配置NuGet以通过以下方式下载丢失的软件包:

    3.1。在Visual Studio中:Tools -> Options

    3.2。筛选依据nuget(对话框左上方)。选择General

    3.3。确保Allow NuGet to download missing packages已检查

在此处输入图片说明

  1. 关闭并重新打开解决方案。NuGet将下载所需的软件包。

注意:还可以通过从NuGet程序包管理器控制台(Tools -> NuGet Package Manager -> Package Manager Console)执行以下命令来实现NuGet.Config配置:

PM> nuget config -set globalPackagesFolder=.\packages -configfile "$(pwd)\NuGet.Config"

我还有更多工作-必须添加nuget.org api地址<configuration> <config> <add key =“ globalPackagesFolder” value =“。\ packages” /> </ config> <packageSources> <add key =“ nuget .org“ value =” api.nuget.org/v3/index.json “ protocolVersion =” 3“ /> </ packageSources> </ configuration>
FelipeDrumond

14

packages.NET Core解决方案中仍然有文件夹,但是全局包位于:C:\Users\[YourUsername]\.nuget\packages


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.