web-dev-qa-db-ja.com

NuGetパッケージをアンインストール/再インストールできません

Visual Studio Express 2012でプロジェクトをセットアップし、C#コードを追加して、エミュレーターに正常にコンパイル/デプロイしました。ある時点で、JSONで何かをしたいと決めたので、NuGetパッケージとして利用可能な Json.NETフレームワークを使用する必要があることがわかりました 。コマンドInstall-Package Newtonsoft.Jsonを使用して、このフレームワークを正常に追加しました。

2日前にMSVCが提供した更新プログラムをインストールしようとしましたが、インストールに失敗し、プロジェクトを再び開くことができませんでした。 MSVCの再インストールは役に立たなかったため、Windowsを以前の状態に復元することになりました。プロジェクトを再び開くことができたので、NuGetパッケージを再インストールしたかった(プロジェクト内にインストールされていることを知らないnot MSVC)。インストール時にエラーが発生したため、パッケージコンソールからすべてをアンインストールしようとしました。

長い話:

  • Nugetパッケージコンソールは、Get-Packageのときに「パッケージがインストールされていません」と表示します
  • Install-Package Newtonsoft.Jsonを再度実行すると、エラーが表示されます

    Newtonsoft.Json 5.0.6をインストールできませんでした。 「WindowsPhone、Version = v8.0」を参照するプロジェクトにこのパッケージをインストールしようとしましたが、パッケージにはこのフレームワークと互換性のあるアセンブリが含まれていません

  • 「NuGetパッケージの管理」ダイアログには、「インストール済み」の下にno packagesが表示されますが、オンラインパッケージでは、jsonパッケージがリストされ、インストール済みとしてマークされます(so私はそれをインストールしようとすることはできません)

今、私は完全に失われています。パッケージを適切にインストールする方法も、適切に削除する方法もわかりません。プロジェクトファイルは壊れていますか?どうすれば修復できますか?


[編集]今ではさらに混乱します。 NuGetパッケージマネージャー(MSVCではありません)を更新し、Json.NETを再インストールしようとしました。

  • ダイアログの「インストール済み」の下にはまだ表示されません
  • オンラインパッケージリストでは、インストール済みとしてマークされなくなりましたが、「インストール」をクリックするだけでnothing
  • コンソールの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>
35
user826955

ソリューションまたはプロジェクトには、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バージョンが取り込まれます。 (packages\Newtonsoft.Json.4.5.10\lib\sl3-wp\Newtonsoft.Json.dll)

JSON.NETは、WP8から使用できるポータブルクラスライブラリとしても利用できるようになりました(NuGetまたはソース形式で利用可能)。

更新:

VS 2013:ソリューションの[参照設定]および[NuGetパッケージの管理]を右クリックすると、左上隅に[インストール済みパッケージ]が表示されます。パッケージを選択すると、アンインストールオプションが利用可能になります。

VS 2015:ソリューションで、[参照設定]および[NuGetパッケージの管理]を右クリックし、右上の[インストール済み]タブを見つけます。パッケージにカーソルを合わせると、「X」がアンインストールされているように見えます。

VS 2017:ソリューションで、右クリックして[ソリューションのNuGetパッケージを管理]をクリックし、左上にある[インストール済み]タブを見つけます。パッケージをクリックすると、右側のパネルに「アンインストール」ボタンが表示されます。

VS 2019:(2017と同じ)ソリューションで、右クリックして[ソリューションのNuGetパッケージを管理]をクリックし、左上にある[インストール済み]タブを見つけます。パッケージをクリックすると、右側のパネルに「アンインストール」ボタンが表示されます。

47
paqogomez

同じ問題がありました。 package.configをすべて変更した後でも、パッケージを再インストールできませんでした。ここで私のために働くもの。

ソリューションフォルダーには、「packages」ディレクトリが必要です。このディレクトリを開き、パッケージに関連付けられているディレクトリを削除します。

できた.

24
Guish

新しいWindows 10マシンに4時間座っただけで、Visual Studio 2015で参照が機能しなかった理由と、NuGetパッケージを復元できなかった理由がわかりませんでした。何らかの理由で、TFSは2つのパッケージフォルダーを追加しました。

場所:

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

C:\ Users\YourUser\.nuget\packages

パッケージフォルダーの両方が削除されたとき、NuGetパッケージを復元でき、すべてが再び機能しました。

7
Ogglas

確かに少し混乱しますが、ソリューションを右クリックしてnugetパッケージの管理を選択すると、さまざまなオプションが利用できます。そこからアンインストールできるはずです。

Json.netおよびWP8の詳細については、ここで答えを確認してください: Windows Phone 8 JSON .

1
Alex Paven

VS2017(新規インストール)でも同様の問題がありました。私は比較的新しいパッケージをインストールしようとして古いプロジェクトで働いていました。 GUIからパッケージをインストールすると、1秒間点滅してから何もしませんでした。

問題は、プロジェクトの.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
0
pensono

私はこの解決策とその作品を試しました

<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>
0
Mina Fawzy