web-dev-qa-db-ja.com

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

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

73
dgorti

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


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

注意:これはALLパッケージのsolutionをアンインストールします。 -Forceパラメーターを使用すると、依存関係が存在する場合でもパッケージが削除されます。

Get-Package | Uninstall-Package -RemoveDependencies -Force


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

注意:これはALLパッケージのprojectをアンインストールします。 -Forceパラメーターを使用すると、依存関係が存在する場合でもパッケージが削除されます。

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

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

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

82

これを試して:

get-package | uninstall-package -removedependencies -force
28
AHA

ソリューションのすべてのプロジェクトからすべての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} }
15
Michal Steyn

私の場合、-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 }

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

9
Nathan

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

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

これを説明しているMarcus Hammarbergのブログ: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html

2
loan.burger

ダミーのオールドスクール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++
    }
}
1
Teoman shipahi