it-swarm.com.de

NuGet: Aktualisieren Sie ein Paket in einer bestimmten Version über PowerShell oder CMD auf eine bestimmte Version

Wir haben ein Szenario, in dem verschiedene Teams an verschiedenen Teilen eines größeren Produkts arbeiten. Von Zeit zu Zeit müssen alle Visual Studio-Projekte aller Lösungen dort einige ihrer referenzierten NuGet-Pakete aktualisieren. Als Ergebnis dieser Aktualisierung sollten alle Projekte in der gesamten Quellstruktur auf die gleichen Versionen der Pakete verweisen.

Gibt es eine Möglichkeit, ein bestimmtes NuGet-Paket auf eine bestimmte Version in allen Projekten zu aktualisieren, indem Sie automatischer Ansatz wie PowerShell-Skripts verwenden?

Bearbeiten: Gibt es eine Möglichkeit, die erforderlichen Teile von Visual Studio und NuGet irgendwie auf Aktualisieren der Assemblyreferenzen zu laden?

Beispiel: 

NuGetScript Update Solution.sln PackageName -version NewVersion

oder

NuGetScript Update PathToProjects PackageName -version NewVersion

Es gibt zu viele Komponenten, um alle in Visual Studio zu laden und manuell über die Package Manager-Benutzeroberfläche zu aktualisieren.

17

Sie können ein PowerShell-Skript erstellen, um alle Projektdateien oder Packages.config-Dateien in Ihrer Projektmappe zu durchsuchen, und anschließend den Befehl nuget update aufrufen, um die Pakete zu aktualisieren.

Beim Aktualisieren von Paketen außerhalb von Visual Studio gibt es jedoch eine Einschränkung. Ich würde Ihnen empfehlen, dies von Visual Studio aus zu tun:

Mit dem Aktualisierungsbefehl werden alle neuen Pakete in die .__-Datei heruntergeladen und extrahiert. Paketordner. Assemblyreferenzen werden im Projekt aktualisiert Datei, dies ist jedoch nur auf vorhandene Referenzen beschränkt. Wenn ein neues Paket hat eine hinzugefügte Assembly, es wird nicht als Teil von .__ hinzugefügt. Aktualisierungsbefehl Neue Paketabhängigkeiten haben auch keine Montagehinweise hinzugefügt. Um ein vollständiges Update durchzuführen, verwenden Sie Visual Studio.

6

Verwenden Sie die folgende Befehlszeile im Fenster der Package Manager Console, um ein bestimmtes Paket in einer Lösung zu aktualisieren.

Get-Project-All | Update-Package PackageName -Version neueVersion

14

Das folgende Skript wurde woanders gefunden. Ich habe es mit meinen Projekten versucht. Ich habe nicht den ursprünglichen Link

Das folgende Skript funktioniert:

  1. führen Sie den Befehl restore für alle Lösungen aus, die in einem Ordner gefunden werden
  2. Findet alle packages.config-Dateien, die den angegebenen Paket-ID-Namen enthalten
  3. führt den Befehl update unter Verwendung der Datei packages.config und des Paketnamens als Parameter aus

Dies setzt voraus, dass sich nuget.exe in dem Ordner befindet, von dem aus Sie dies ausführen

param(
    [Parameter(Mandatory=$true)]
    [string]$packageId
)

Get-ChildItem *.sln -recurse | %{.\\nuget.exe restore $_.fullname}

Get-ChildItem packages.config -Recurse `
  | Where-Object {$_ | Select-String -Pattern $packageId} `
  | %{.\\nuget.exe update -Id $packageId $_.FullName}
1
jdelgado