我已经加载了一个旧项目。它具有一个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,我的问题是:没有一种自动的方法可以完成这项工作?
答案 0 :(得分:1)
因为Nuget软件包管理器已经知道存在v2,但它失败了 在任何地方找到v1,我的问题是:没有自动的方法可以 使这项工作?
事实上,没有这种自动功能可以通过VS IDE卸载不存在的nuget程序包。您应该手动删除nuget xml元素。
然后,当您卸载或更新软件包时, VS IDE 将检查当前机器上或nuget软件包源中是否存在当前版本的nuget。也就是说,当您卸载或更新nuget程序包时, VS IDE 将执行额外的还原操作。这是默认操作。
示例,当我卸载本地缓存和软件包源下不存在的软件包时,将发生错误:< / p>
这将建议我们进行还原。
---------------
如果要更新或卸载不存在的软件包,则必须手动删除该软件包的内容,并且别无选择:
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上建议此功能,团队将认真考虑您的想法并给您满意的反馈。