PMコンソールからアンインストールパッケージを実行できることはわかっています。別のプロジェクトでいくつかの依存関係の問題が発生し、最初からやり直したいので、すべてのパッケージを一度に削除する必要があります。方法はありますか?
回答:
ソリューション内のすべてのプロジェクトからすべてのパッケージを取得するには、を使用しますGet-Package
。特定のプロジェクトからすべてのパッケージを取得するには、を使用しますGet-Package -ProjectName "YourProjectName"
。
注意:これにより、ソリューション内のすべてのパッケージがアンインストールされます。場合は、パラメータが使用され、パッケージは依存関係が存在する場合でも削除されます。
-Force
Get-Package | Uninstall-Package -RemoveDependencies -Force
注意:これにより、プロジェクト内のすべてのパッケージがアンインストールされます。場合は、パラメータが使用され、パッケージは依存関係が存在する場合でも削除されます。
-Force
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
。これは私のために働いた。
ソリューション内のすべてのプロジェクトからすべての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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
私の場合、-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 }
依存パッケージ以外にパッケージのアンインストールを妨げる別の問題がある場合、このスニペットは手動で停止するまで永久に実行されることに注意してください。
これが可能だとは思わないので、すべてのパッケージを一度にアンインストールしてください。ただし、すでに示したように、パッケージをアンインストールできますが、次のようにして、依存関係をアンインストールするように指示することもできます。
アンインストール-パッケージOpenIdPortableArea–RemoveDependencies
これを説明するMarcusHammarbergのブログは次のとおりです。http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html
スクリプトを更新して、VSソリューションの単一プロジェクトのすべてのnugetパッケージを削除しました。
$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}
ダミーの古い学校の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++
}
}