将NuGet软件包恢复到最新版本

时间:2018-10-02 07:49:01

标签: nuget nuget-package nuget-package-restore

在项目中,我一直在使用一些自定义的NuGet源。显然其中一些不再可用,但我确实在另一台(仍在工作的)服务器上具有更新(只有更新)版本的软件包。有没有一种方法可以直接将软件包还原到最新版本,而无需手动替换.csproj和packages.config文件中的所有引用?

我尝试运行Updade-Package -Reinstall,但只收到以下错误消息:

Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.

1 个答案:

答案 0 :(得分:1)

如果您使用过(仍然想使用)的某些软件包不再可用,我建议您对其进行备份。

在服务器上找到Nuget cache。在Windows上,位于

  

%userprofile%.nuget \ packages

发现要备份的软件包(和版本),并将.nupkg文件复制到它们各自的文件夹中。

然后您有两个选择:

  1. Create a private Nuget feed
  2. Create a local Nuget feed在开发计算机上

第一个选项的优势是可以在任何您想要的机器(开发机器,构建服务器...等)上使用的单一来源,但是您将有更多设置,尤其是对于身份验证/授权(因为它是私人供稿)

对于第二个选项:只需创建一个C:/Nuget文件夹,然后放置所需的任何.nupkg。 然后在Visual Studio中转到:

  

工具-> Nuget程序包管理器->程序包管理器设置->程序包源

点击绿色的+按钮添加新的来源,只需为其命名为Local,然后浏览到C:/Nuget即可设置来源。

从现在开始,当您要还原Nuget程序包时,Visual Studio将首先查看nuget.org feed,如果找不到引用的程序包,则将查看您的Local feed并缓存已安装的包。打包到机器的%userprofile%.nuget\packages

我希望能回答您的问题,我不太确定您的要求和对Nuget的了解。

更新:

我想我现在更了解您的问题。

首先,我认为您对Update-Package -Reinstall命令有误解。它将按照已引用的相同版本重新安装软件包,但只需重新安装即可。例如,当您更改项目的目标框架时,这是一个有用的命令。然后,您可以重新安装相同版本的软件包,它们将重新定位此.NET Framework版本。

因此,如果nuget restore无法正常工作,那么Update-Package -Reinstall显然也会失败。

使用Nuget时,当某些问题不起作用时,您不应该坚持,而是找到可以使其再次起作用的调整。我无法计算我去不同的缓存删除了一些缓存包的次数。

我认为您应该尝试使用nuget restore并查看是什么引起了问题的软件包,然后卸载这些软件包(如果它们不是,则将从.csprojpackages.config中删除引用(尚未安装在项目中),那么您最终可以安装这些软件包的最新版本。