无法卸载/重新安装NuGet包

时间:2013-09-05 07:32:10

标签: c# visual-studio windows-phone-8 nuget packages

我使用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包并标记为已安装(因此我无法尝试安装)< / LI>

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


[编辑] 现在它变得更加混乱。我刚刚更新了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>

6 个答案:

答案 0 :(得分:47)

在您的解决方案或项目中,您会找到一个名为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管理器引入了JSON.NET的WP7版本。 (包\ Newtonsoft.Json.4.5.10 \ lib中\ SL3-WP \ Newtonsoft.Json.dll)

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

更新:

最新版本的NuGet有一个卸载。

VS 2013:在解决方案中,右键单击References和Manage NuGet包,您将在左上角找到“Installed Packages”。选择包,将有一个卸载选项。

VS 2015:在解决方案中,右键单击References和Manage NuGet包,找到右上角的“Installed”选项卡。将鼠标悬停在软件包上,“X”似乎将卸载。

VS 2017:在解决方案上,右键单击“管理解决方案的NuGet包”,找到左上角的“已安装”选项卡。单击包,在右侧面板中将显示“卸载”按钮。

VS 2019 :(与2017年相同)在解决方案中,右键单击“管理NuGet包以获得解决方案”,找到左上角的“已安装”选项卡。单击包,在右侧面板中将显示“卸载”按钮。

答案 1 :(得分:24)

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

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

完成。

答案 2 :(得分:7)

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

位置:

  

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

     

C:\用户\ YourUser \ .nuget \包

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

我试过这个解决方案及其作品

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

答案 5 :(得分:0)

我在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
相关问题