在这个项目中,我一直在使用一些定制的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.
发布于 2018-10-12 02:15:48
如果您使用的某些包(并且仍然想使用)不再可用,我建议您对它们进行备份。
在服务器上找到Nuget缓存。在Windows上,这个位置位于
%userprofile%.nuget\packages
查找要备份和复制相应文件夹中的.nupkg
文件的包(和版本)。
那么你有两个选择:
第一个选项的优点是可以在任何您想要的机器(开发机器、构建server...etc)上使用单一的源,但是您将有更多的设置,特别是用于身份验证/授权(因为它是一个私有提要)。
对于第二个选项:只需创建一个C:/Nuget
文件夹并放置任何您想要的.nupkg
。然后在中转到:
工具-> Nuget软件包管理器->软件包管理器设置->包源
单击绿色+
按钮添加一个新源代码,只需给它命名Local
并浏览到您的C:/Nuget
来设置源代码。
从现在开始,当您想要还原您的Nuget包时,Visual将首先查看nuget.org
提要,如果它找不到引用的包,那么将查看您的本地提要并将安装的包缓存到您的机器的%userprofile%.nuget\packages
中。
我希望回答你的问题,我不太清楚你问了什么,你对Nuget的了解。
更新:
我想我现在更明白你的问题了。
首先,我认为您误解了Update-Package -Reinstall
命令。它将重新安装与已经引用的版本相同的软件包,但只需重新安装它们。例如,当您更改项目的目标框架时,它是一个有用的命令。然后,您可以重新安装相同版本的包,它们将重定向这个.NET框架版本。
因此,如果nuget restore
不能工作,那么Update-Package -Reinstall
显然也会失败。
对于Nuget,当一些东西不起作用的时候,你不应该坚持,相反,找到能使它再次发挥作用的调整。我不知道有多少次我去不同的缓存删除一些缓存包。
我认为您应该尝试使用nuget restore
,看看是什么包导致了问题,然后卸载这些包(如果它们还没有安装在项目中,这只会从.csproj
和packages.config
中删除引用),那么您就可以最终安装这些包的最新版本了。
https://stackoverflow.com/questions/52604035
复制相似问题