【发布时间】:2019-04-26 05:13:08
【问题描述】:
我仍然对 nuget 的工作原理感到困惑。我从控制台 git 克隆了一个 C# .sln 项目,然后运行了这个 nuget 命令:
nuget restore my_project.sln
我注意到它生成了两个包,其中包含 my_project 所需的所有依赖项。
一个包位于 my_project/src/packages 下,另一个位于 c:/users/my_user_name/.nuget/packages 下。虽然文件结构略有不同,但两个包中的 DLL 文件是相同的。
这让我很困惑。为什么默认会生成两个包? Visual Studio 究竟在哪里查找项目的依赖项?
更重要的是,我应该更新哪个配置文件以便只保留依赖项的副本,以及如何在我的文件系统中指定包的位置?
【问题讨论】:
-
嗨,请检查docs.microsoft.com/en-us/nuget/consume-packages/…,全局包文件夹是 NuGet 安装任何下载包的位置。每个包都完全展开到与包标识符和版本号匹配的子文件夹中。使用 PackageReference 格式的项目始终直接使用此文件夹中的包。使用 packages.config 时,包会安装到 global-packages 文件夹中,然后复制到项目的 packages 文件夹中。
-
包还原时,如果尚未安装包,NuGet 首先会尝试从上述缓存中检索它。如果包不在缓存中,NuGet 会尝试从所有启用的源下载包。有关更多详细信息,请参阅此处:docs.microsoft.com/en-us/nuget/consume-packages/package-restore
标签: c# visual-studio nuget nuget-package-restore