VisualStudioのソリューションから*すべての* nugetパッケージをアンインストールする方法


91

PMコンソールからアンインストールパッケージを実行できることはわかっています。別のプロジェクトでいくつかの依存関係の問題が発生し、最初からやり直したいので、すべてのパッケージを一度に削除する必要があります。方法はありますか?

回答:


135

ソリューション内のすべてのプロジェクトからすべてのパッケージを取得するには、を使用しますGet-Package。特定のプロジェクトからすべてのパッケージを取得するには、を使用しますGet-Package -ProjectName "YourProjectName"


ソリューション内のすべてのプロジェクトからすべてのパッケージを削除します

注意:これにより、ソリューション内のすべてのパッケージがアンインストールされます。場合は、パラメータが使用され、パッケージは依存関係が存在する場合でも削除されます。-Force

Get-Package | Uninstall-Package -RemoveDependencies -Force


ソリューション内の特定のプロジェクトからすべてのパッケージを削除します

注意:これにより、プロジェクト内のすべてのパッケージがアンインストールされます。場合は、パラメータが使用され、パッケージは依存関係が存在する場合でも削除されます。-Force

Get-Package -ProjectName "YourProjectName" | 
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force

27
最後に-Forceパラメーターを追加することをお勧めします。これがないと、他のNuGetパッケージとの依存関係に基づいてすべての依存関係をアンインストールできません。
ショーンステインズ2017

これが本当の答えです。ショーンの使用提案と組み合わせる-force。これは私のために働いた。
スパイク

86

パッケージマネージャーコンソールで、次のように入力します。

get-package | アンインストールパッケージ-removedependencies


14
複雑な依存関係グラフにとらわれないようにするには、-Forceswitchを使用します。
アリレザ2017

12
警告:この表彰は、ソリューション全体のすべてのパッケージをアンインストールします。
ジェイコブ

31

これを試して:

get-package | uninstall-package -removedependencies -force

15

ソリューション内のすべてのプロジェクトからすべてのNuGetパッケージをアンインストールする場合は、NuGetパッケージマネージャーコンソールでこれを使用します。

foreach($project in $projects){ $packages = Get-Package -ProjectName $project.Name; foreach($package in $packages){ Uninstall-Package -ProjectName $project.Name -Id $package.Id -Force} }

4
素晴らしい答え。単一プロジェクトのスクリプト:$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
Mohsen Afshin 2016

10

私の場合、-Forceパラメーターを使用すると、プロジェクトファイルの変更と、通常はパッケージをアンインストールするときに削除されるべきであったいくつかのバイナリへの参照が残りました。

これは、-Forceパラメーターを使用せずに特定のプロジェクトからすべてのパッケージをアンインストールする単純な方法です。事実上、パッケージがなくなるまで何度も何度もパッケージをアンインストールしようとするため、依存パッケージ(ある場合)に言及するエラーが表示されますが、リーフパッケージが繰り返し削除されるたびに表示されるエラーは少なくなります。

また、PackageManagerコンソールで次のPowerShellスニペットのみをテストしたことにも言及する価値があります。(「ツール> NuGetパッケージマネージャー>パッケージマネージャーコンソール」)

ソリューション内のすべてのプロジェクトからすべてのパッケージをアンインストールします

while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }

WildCardSearch」という単語を含むプロジェクトのみを削除してください

while((Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*'  | Get-Package).Length -gt 0) { Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*' | Get-Package | Uninstall-Package }

依存パッケージ以外にパッケージのアンインストールを妨げる別の問題がある場合、このスニペットは手動で停止するまで永久に実行されることに注意してください。


3

これが可能だとは思わないので、すべてのパッケージを一度にアンインストールしてください。ただし、すでに示したように、パッケージをアンインストールできますが、次のようにして、依存関係をアンインストールするように指示することもできます。

アンインストール-パッケージOpenIdPortableArea–RemoveDependencies

これを説明するMarcusHammarbergのブログは次のとおりです。http//www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html


3
「依存関係の削除」は、1つのパッケージが他の多くのパッケージに依存している場合に機能します。N個のパッケージがコアパッケージ(Boostなど)に依存している場合は機能しません。NuGet Boostパッケージを1つずつ手動で削除する必要がありますが、これは面倒です。
quant_dev 2015

1

スクリプトを更新して、VSソリューションの単一プロジェクトのすべてのnugetパッケージを削除しました。

$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}

0

ダミーの古い学校のforループ:

$packages = get-package
$packageId = "Apache.NMS.ActiveMQ"


$counter = 1
foreach($package in $packages){     
    if($package.Id -eq $packageId)
    {   
        Write-Host "`n$counter-Deleting Package:`n"
        $package        
        Uninstall-Package -Id $packageId -ProjectName $package.ProjectName -RemoveDependencies 
        Write-Host "`n============================================`n"
        $counter++
    }
}

0

パッケージマネージャーコンソールを使用したプロジェクト内のパッケージの自動復元(アンインストールしてからインストール):

更新-パッケージ-再インストール

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.