Nuget Restore正在其他位置创建包文件夹

Nuget Restore正在其他位置创建包文件夹,nuget,nuget-package-restore,Nuget,Nuget Package Restore,我有一个包含类库的解决方案a,它有一个package.config。当我使用Nuget Restore选项时,它会正确地重新创建包文件夹,并且引用也正常。 在另一个解决方案B中,我添加了项目A,当我尝试Nuget Restore时,它在解决方案B目录中创建了packages文件夹,而项目A找不到缺少的引用。如何使解决方案B恢复项目A目录中项目A所需的包?TL;DR:尝试从包管理器控制台运行 我知道发生这种情况的唯一方法是,将使用packages.config进行NuGet引用的项目移动到一个新目

我有一个包含类库的解决方案a,它有一个package.config。当我使用Nuget Restore选项时,它会正确地重新创建包文件夹,并且引用也正常。 在另一个解决方案B中,我添加了项目A,当我尝试Nuget Restore时,它在解决方案B目录中创建了packages文件夹,而项目A找不到缺少的引用。如何使解决方案B恢复项目A目录中项目A所需的包?

TL;DR:尝试从包管理器控制台运行

我知道发生这种情况的唯一方法是,将使用
packages.config
进行NuGet引用的项目移动到一个新目录,该目录与解决方案具有不同的相对路径
packages.config
基本上是“非集成”的包管理。从一开始使用.NET的任何人都会记得没有NuGet的时候,您需要直接向DLL添加程序集引用
packages.config
自动执行此操作,但这意味着当解决方案包文件夹的路径更改时,引用将不再有效。NuGet不知道这一点,总是还原到解决方案包文件夹。因此,您需要更新项目以正确指向解决方案包文件夹。您可以通过编辑项目文件、逐个卸载并重新安装所有软件包或使用PMC的
更新软件包来手动完成此操作

PackageReference没有这个问题,因为恢复的包的路径没有存储在项目中,所以即使您的项目移动了,在最坏的情况下,您需要做的就是再次恢复,但通常甚至不需要。因此,如果可以的话,我建议您查看文档,因为有一些包兼容性问题需要注意。基本上,如果您使用的软件包的内容在安装时被复制到项目中,那么您需要坚持使用
packages.config
。否则,
PackageReference
会为几乎所有其他人提供更好的体验