簡體   English   中英

無法卸載/重新安裝 NuGet 包

[英]Can't uninstall/reinstall NuGet package

我已經使用 Visual Studio Express 2012 設置了我的項目,添加了一些 C# 代碼,並成功編譯/部署到模擬器。 在某個時候,我決定用 JSON 做點什么,我發現我應該使用 Json.NET 框架,它可以作為 NuGet 包使用 我已經使用命令Install-Package Newtonsoft.Json成功添加了這個框架。

我嘗試安裝 MSVC 兩天前提供的更新,但安裝失敗,使我無法再次打開我的項目。 重新安裝 MSVC 沒有幫助,所以我最終將 Windows 恢復到以前的狀態。 我能夠再次打開我的項目,我想重新安裝 NuGet 包(不知道它安裝在項目內部,而不是MSVC)。 它在安裝時給了我錯誤,所以我嘗試從包控制台卸載所有內容。

長話短說:

  • Get-Package時,Nuget 軟件包控制台顯示“未安裝軟件包”
  • 再次運行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”子文件夾

我應該從頭開始並創建一個新項目嗎? :/


package.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的文件。 打開此文件,您將看到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 管理器中添加它會引入 JSON.NET 的 WP7 版本。 (包\\Newtonsoft.Json.4.5.10\\lib\\sl3-wp\\Newtonsoft.Json.dll)

JSON.NET 現在也可用作可移植類庫,您可以從 WP8 使用它(在 NuGet 或源形式中可用)。

更新:

最新版本的 NuGet 具有卸載功能。

與 2013 年相比:

在解決方案中,右鍵單擊“引用”和“管理 NuGet 包”,您會在左上角找到“已安裝的包”。 選擇軟件包,然后將提供卸載選項。

與 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM