无法卸载/重新安装 NuGet 包

本文关键字:NuGet 重新安装 卸载 | 更新日期: 2023-09-27 18:30:17

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

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

长话短说:

  • Nuget 包控制台在Get-Package时显示"未安装包"
  • 再次运行Install-Package Newtonsoft.Json给我错误

    无法安装 Newtonsoft.Json 5.0.6。您尝试在引用"WindowsPhone,版本=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
    
  • 尝试使用"卸载包Newtonsoft.Json
  • "卸载给出"找不到包'Newtonsoft.Json'

  • "
  • 在我的项目文件夹中,我可以在packages目录中看到"Newtonsoft.Json.5.0.6"子文件夹

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


软件包的内容.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>

无法卸载/重新安装 NuGet 包

在您的解决方案或项目中,您将找到一个名为 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 包应该只适用于 Windows Phone 8.0 项目。在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包",找到左上角的"已安装"选项卡。 单击软件包,右侧面板中将显示"卸载"按钮。

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

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

做。

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

地点:

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

C:''Users''YourUser''.nuget''packages

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

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

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

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

<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>

我在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