无法卸载/重新安装 NuGet 包

Posted

技术标签:

【中文标题】无法卸载/重新安装 NuGet 包【英文标题】:Can't uninstall/reinstall NuGet package 【发布时间】:2013-09-08 22:25:01 【问题描述】:

我已经使用 Visual Studio Express 2012 设置了我的项目,添加了一些 C# 代码,并成功编译/部署到模拟器。在某个时候,我决定用 JSON 做一些事情,我发现我应该使用 Json.NET 框架,即available as a NuGet package。我已经使用命令Install-Package Newtonsoft.Json成功添加了这个框架。

我尝试安装两天前 MSVC 提供的更新,但安装失败,导致我无法再次打开我的项目。重新安装 MSVC 没有帮助,所以我最终将 Windows 恢复到以前的状态。我能够再次打开我的项目,我想重新安装 NuGet 包(不知道它安装在项目中,不是 MSVC)。它在安装时给了我错误,所以我尝试从包控制台卸载所有内容。

长话短说:

Nuget 包控制台在Get-Package 时显示“未安装包” 再次运行Install-Package Newtonsoft.Json 时出现错误

无法安装 Newtonsoft.Json 5.0.6。您尝试在引用“WindowsPhone,Version=v8.0”的项目中安装此软件包,但该软件包不包含与此框架兼容的程序集

“管理 NuGet”包对话框在“已安装”下显示 没有包,但是在在线包中,json 包被列出并标记为已安装(所以我无法尝试安装它)

现在我完全迷路了。我不知道如何正确安装软件包,也不知道如何正确删除它。我的项目文件坏了吗?我该如何修复它?


[编辑] 现在它变得更加混乱。我刚刚更新了 NuGet 包管理器(虽然不是 MSVC),并尝试重新安装 Json.NET。

在对话框中,“已安装”下仍未显示 在在线软件包列表中,它不再被标记为已安装,但单击“安装”只是什么都不做

Get-Package 在控制台中显示包已安装

PM> Get-Package

Id                             Version              Description/Release Notes                                                                                                                                                                                            
--                             -------              -------------------------                                                                                                                                                                                            
Newtonsoft.Json                5.0.6                Json.NET is a popular high-performance JSON framework for .NET

尝试使用“Uninstall-Package Newtonsoft.Json”进行卸载时会出现“找不到包 'Newtonsoft.Json'”

在我的项目文件夹中,我可以在packages 目录中看到一个“Newtonsoft.Json.5.0.6”子文件夹

我应该从头开始创建一个新项目吗? :/


packages.dgml 的内容:

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph GraphDirection="LeftToRight" xmlns="http://schemas.microsoft.com/vs/2009/dgml">
  <Nodes />
  <Links />
  <Categories>
    <Category Id="Projekt" />
    <Category Id="Paket" />
  </Categories>
  <Styles>
    <Style TargetType="Node" GroupLabel="Projekt" ValueLabel="True">
      <Condition Expression="HasCategory('Projekt')" />
      <Setter Property="Background" Value="Blue" />
    </Style>
  </Styles>
</DirectedGraph>

【问题讨论】:

您可以尝试打开 packages.config 并删除 Newtonsoft.Json 条目 - 这应该可以解决您的第三个要点。然后也许您将能够从 NuGet 包管理器窗口重新安装它。你的第二个要点让我有点怀疑...... 那么,您之前使用过包管理器吗?现在你安装了 NuGet?您可以尝试进入包管理器并从那里卸载。 (工具 -> 库包管理器) 如上所述,我无法从那里卸载,因为它没有被列为已安装。搞笑:我刚刚创建了一个普通的新项目,通过 NuGet 添加了包,现在我的项目文件夹中还有一个 packages.config 文件,但没有 Packages.dgml。我想我要重新开始了。仍然感谢您的帮助。 我更新了我的答案以反映 NuGet 现在有卸载的事实。 【参考方案1】:

在您的解决方案或项目中,您会找到一个名为 packages.config 的文件。打开这个文件,你会看到NuGet已经安装的所有包。

文件看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Json" version="2.0.3" targetFramework="net45" />
</packages>

只需删除你的包行并保存文件。

<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>

然后再次运行NuGet,它应该会安装。

JSON.NET NuGet 包应该只是work with a Windows Phone 8.0 project。在 VS2012 NuGet 管理器中添加它会引入 WP7 版本的 JSON.NET。 (packages\Newtonsoft.Json.4.5.10\lib\sl3-wp\Newtonsoft.Json.dll)

JSON.NET 现在也可用作可移植类库,您可以从 WP8 使用它(以 NuGet 或源形式提供)。

更新:

最新版本的 NuGet 已卸载。

VS 2013:

在解决方案中,右键单击“引用”和“管理 NuGet 包”,您会在左上角找到“已安装的包”。选择包,卸载选项将可用。

VS 2015:

在解决方案中,右键单击“引用”和“管理 NuGet 包”,找到右上角的“已安装”选项卡。将鼠标悬停在包上,“X”将出现卸载。

VS 2017:

在解决方案上,右键单击“管理解决方案的 NuGet 包”,找到左上角的“已安装”选项卡。单击软件包,右侧面板中将出现一个“卸载”按钮。

VS 2019:

(与2017相同)在解决方案上,右键单击“管理解决方案的NuGet包”,找到左上角的“已安装”选项卡。单击软件包,右侧面板中将出现一个“卸载”按钮。

【讨论】:

我找不到名为 packages.config 的文件。 Explorer 在我的项目目录中找不到此文件。你的意思是我项目根目录中的Packages.dgml 吗?它不包含您提到的 XML。 必须是文件。 DGML is usually viewed graphically,但 underlying info is XML。你能进入 XML 视图吗? 不,那不是文件。 在VS 2019中,当我点击卸载按钮时,仍然显示找不到包的错误。为什么 Visual Studio 需要安装一些东西来卸载它?编辑:从packages.config 删除条目效果很好。 @AaronFranke 很高兴听到这个消息。出于这样的原因,将所有版本留在此答案上会很有帮助:)【参考方案2】:

这确实有点令人困惑,但是如果您右键单击解决方案并选择管理 nuget 包,则可以使用不同的选项。您应该可以从那里卸载。

您应该在此处查看答案:Windows Phone 8 JSON 了解有关 Json.net 和 WP8 的更多信息。

【讨论】:

【参考方案3】:

我遇到了同样的问题。即使在所有 package.config 修改之后,我也无法重新安装我的包。这对我有用。

在您的解决方案文件夹中应该有一个“包”目录。打开此目录并删除与您的包关联的目录。

完成。

【讨论】:

你是真正的忍者。【参考方案4】:

刚刚在我的新 Windows 10 机器上坐了四个小时,但无法弄清楚为什么在 Visual Studio 2015 中没有引用工作以及为什么我无法恢复 NuGet 包。出于某种原因,TFS 添加了两个包文件夹:

地点:

C:\Users\YourUser\Documents\Visual Studio 2015\Projects\YourProject\packages

C:\Users\YourUser\.nuget\packages

删除两个包文件夹后,我可以恢复 NuGet 包,一切都恢复正常。

【讨论】:

【参考方案5】:

我尝试了这个解决方案及其工作原理

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is 0.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

【讨论】:

【参考方案6】:

我在 VS2017(全新安装)中遇到了类似的问题。我正在处理一个较旧的项目,试图安装一个相对较新的包。当我从 GUI 安装软件包时,它闪烁了一秒钟,然后什么也没做。

问题是我的项目的 .NET 目标低于包。 (我的解决方案针对 4.5,包针对 4.6)。 在我的项目配置中将 .NET 目标更改为足够新的版本并重新构建解决了该问题。

可以通过运行以下命令来查看此问题:(名称已更改)

PM> Install-Package Package.NET

Attempting to gather dependency information for package 'Package.NET.1.0.0' with respect to project 'MyProject', targeting '.NETFramework,Version=v4.5'
Gathering dependency information took 0.19 ms
Attempting to resolve dependencies for package 'Package.NET.1.0.0' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'Package.NET.1.0.0'
Resolved actions to install package 'Package.NET.1.0.0'
Retrieving package 'Package.NET.1.0.0' from 'nuget.org'.
Install failed. Rolling back...
Package 'Package.NET.1.0.0' does not exist in project 'MyProject'
Package 'Package.NET.1.0.0' does not exist in folder 'C:\Code\MyProject\packages'
Executing nuget actions took 13.92 ms
Install-Package : Could not install package 'Package.NET.1.0.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', 
but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
At line:1 char:1
+ Install-Package Package.NET
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

【讨论】:

以上是关于无法卸载/重新安装 NuGet 包的主要内容,如果未能解决你的问题,请参考以下文章

无法删除 MSVS 2019 中解决方案的已安装 Nuget 包

inventor2019卸载之后无法再次安装

cad2018卸载后无法重新安装

怎么卸载LNMP重新安装

navisworks 2014 manage 卸载时 提示can not find a language pack to use 如何解决

无法更新包:ID 为 y 的 x.jar。捆绑包已卸载