nuget是否创建单独的程序包?

时间:2019-04-25 21:01:37

标签: c# visual-studio nuget nuget-package-restore

我仍然对nuget的工作方式感到困惑。我从控制台上克隆了一个C#.sln项目,然后运行了这个nuget命令:

nuget restore my_project.sln

引起我注意的是,它会生成两个包含my_project所需的所有依赖项的软件包。

一个包位于 my_project / src / packages 下,另一个 c:/users/my_user_name/.nuget/packages 。尽管文件结构略有不同,但两个软件包中的DLL文件都是相同的。

那使我感到困惑。为什么默认情况下会生成两个软件包? Visual Studio到底在哪里查找项目的依赖项?

更重要的是,我应该更新哪个配置文件以仅保留依赖关系的副本,以及如何为软件包指定文件系统中文件的位置?

1 个答案:

答案 0 :(得分:0)

NuGet的最新版本支持package references in project files

此格式将使用您的%USERPROFILE%.nuget文件夹作为缓存来按需还原软件包。并且您的解决方案文件夹不会被包含您可能不想提交到源代码管理的二进制文件的packages文件夹“污染”。

VS2017允许您在创建新项目(工具/选项/ NuGetPackageManager /常规)时选择“ PackageReferences”或较旧的“ Packages.Config”格式。

您的解决方案中可能有一些项目使用较旧的“ Packages.config”格式(存储在解决方案目录的packages文件夹中)和较新的“ PackageReferences”格式。

要将旧项目转换为新格式,我相信您需要从项目中删除所有软件包,然后再次添加它们。将使用您选择的默认格式添加它们,并提示您确认是否选择了“在首次安装软件包时允许选择格式”。