NuGet无法从不存在的版本自动更新

时间:2020-05-19 09:17:08

标签: visual-studio nuget visual-studio-2019 nuget-package nuget-package-restore

我已经加载了一个旧项目。它具有一个NuGet程序包,该程序包引用了nuget.org远程存储库中不再存在的版本(版本1)。它在我的本地计算机中都不存在。在远程存储库中存在版本2。

当我打开Nuget Package Manager时,此软件包会出现在要更新的列表中(从版本1到版本2)。我这样做了,但是失败了,因为它试图找到以前的版本,所以:

Unable to find version 1.00 of package MyPackage

如果我尝试卸载它,甚至检查以下选项:

 - Remove dependencies
 - Force uninstall

错误是相同的...

仅当我手动修改packages.json版本时,它才有效。

由于Nuget软件包管理器已经知道有一个v2,但无法在任何地方找到v1,我的问题是:没有一种自动的方法可以完成这项工作?

1 个答案:

答案 0 :(得分:1)

因为Nuget软件包管理器已经知道存在v2,但它失败了 在任何地方找到v1,我的问题是:没有自动的方法可以 使这项工作?

事实上,没有这种自动功能可以通过VS IDE卸载不存在的nuget程序包。您应该手动删除nuget xml元素。

然后,当您卸载或更新软件包时, VS IDE 将检查当前机器上或nuget软件包源中是否存在当前版本的nuget。也就是说,当您卸载或更新nuget程序包时, VS IDE 将执行额外的还原操作。这是默认操作。

示例,当我卸载本地缓存软件包源下不存在的软件包时,将发生错误:< / p>

enter image description here

这将建议我们进行还原。

---------------

如果要更新或卸载不存在的软件包,则必须手动删除该软件包的内容,并且别无选择:

1)删除packages.config文件中的软件包内容(如果使用packages.config nuget管理格式),如下所示:

<package id="Microsoft.Data.OData" version="5.8.4" targetFramework="net462" />

2)删除xxx.csproj文件中的这些节点:

 <Reference Include="Microsoft.Data.OData, Version=5.8.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Data.OData.5.8.4\lib\net40\Microsoft.Data.OData.dll</HintPath>
    </Reference>

3),然后安装新版本的软件包。

但是,我认为VS应该认真对待这个问题,我对您的观点很感兴趣。在您当前的情况下,这似乎是一个错误,并且还原操作是多余的。因此,在卸载软件包时,您不必检查软件包是否存在。只需卸载或安装所需的内容即可。

因此,我建议您可以在我们的User Voice Forum上建议此功能,团队将认真考虑您的想法并给您满意的反馈。