我仍然对nuget如何运作感到困惑。我git克隆了一个C#.sln项目,并从控制台,我运行了这个nuget命令:
nuget restore my_project.sln
我注意到它生成了两个包含my_project所需的所有依赖项的包。
一个包位于my_project / src / packages下,另一个包位于:/users/my_user_name/.nuget/packages。虽然文件结构略有不同,但两个包中的DLL文件是相同的。
那让我困惑。为什么默认生成两个包? Visual Studio究竟在哪里查找项目的依赖项?
更重要的是,我应该更新哪个配置文件,以便只保留依赖项的副本,以及如何在文件系统中为包指定位置?
最新版本的NuGet支持package references in project files。
此格式将使用%USERPROFILE%.nuget文件夹作为缓存按需还原包。并且您的解决方案文件夹不会被包含二进制文件的packages文件夹“污染”,您可能不想提交源代码控制。
VS2017允许您在创建新项目时选择“PackageReferences”或较旧的“Packages.Config”格式(Tools / Options / NuGetPackageManager / General)。
您的解决方案中可能有一些项目使用较旧的“Packages.config”格式,该格式存储在解决方案目录的packages
文件夹中,以及较新的“PackageReferences”格式。
要将旧项目转换为新格式,我相信您需要从项目中删除所有包,然后再将它们添加回来。它们将使用您选择的默认格式添加,如果您选择“允许在第一个软件包安装时选择格式”,则会提示确认。