Wyodrębnianie plików Nupkg za pomocą wiersza poleceń

105

Po pierwsze, nie chcę w ogóle używać programu Visual Studio do pracy z określonymi plikami .nupkg.

Wiem, że istnieje narzędzie o nazwie Eksplorator pakietów NuGet, które może wyeksportować pliki nupkg do określonej lokalizacji plików za pomocą interfejsu GUI, ale chcę skonfigurować zadanie MSBuild do uruchamiania i rozpakowywania około 50 plików .nupkg za pomocą wiersza polecenia.

Moje pytanie brzmi: czy istnieje narzędzie, którego można użyć za pomocą wiersza poleceń, które rozpakuje pliki .nupkg do określonej lokalizacji pliku?

Chwytak
źródło

Odpowiedzi:

106

Możesz również użyć wiersza polecenia NuGet, określając hosta lokalnego jako część instalacji. Na przykład, jeśli pakiet jest przechowywany w bieżącym katalogu

nuget install MyPackage -Source %cd% -OutputDirectory packages

rozpakuje go do katalogu docelowego.

Andy
źródło
15
Wystarczy zauważyć, że MyPackage jest w rzeczywistości identyfikatorem pakietu podanym w pliku .nuspec, a nie nazwą pliku.
Rod
i musisz go wykonać z konsoli z uprawnieniami administratora
Sonic Soul
7
Fwiw, w PowerShell polecenie wygląda następująco: nuget install MyPackage -Source $ pwd -OutputDirectory packages
Mark Boltuc
Domyślam się, że% cd% odnosi się do bieżącego katalogu. Jak mogę odwołać się do innej ścieżki w moim systemie lokalnym? nie działa, gdy używam ścieżki. „./example/path/”
seanbun
1
Użyłem bezwzględnej ścieżki do katalogu plików, aby -Source działał dla mnie. Nie podałem nazwy pakietu.
mac10688
149

Pliki NuPKG to tylko pliki zip, więc wszystko, co może przetworzyć plik zip, powinno być w stanie przetworzyć plik nupkg, tj. 7zip.

Calvin Allen
źródło
15
Jest z tym zastrzeżenie, które polega na tym, że NuGet wydaje się wykonywać jakieś kodowanie nazw plików. Jeśli więc korzystasz z narzędzia do kompresji, plik, który pierwotnie nazwano na przykład „A + B.txt”, zostanie wyodrębniony jako „A% 2B.txt”. Można tego uniknąć, używając nuget install (zgodnie z odpowiedzią Andy'ego)
Oli Wennell
1
problem z kodowaniem plików został rozwiązany w wersji 4.7.0+
Fai
15

Zmień nazwę na .zip , a następnie wyodrębnij.

Shadi Namrouti
źródło
To jest bardzo stare pytanie i jeśli po prostu zmienisz je na zip, które nie odpowie na pytanie, jeśli użyjesz narzędzia do zip, plik, który pierwotnie nazwałeś, na przykład „A + B.txt”, zostanie wyodrębniony jako „A % 2B.txt "- Nie musisz też zmieniać nazwy na zip.
Lewis
4

zrobił to samo:

clear
cd PACKAGE_DIRECTORY

function Expand-ZIPFile($file, $destination)
{
    $shell = New-Object -ComObject Shell.Application
    $zip = $shell.NameSpace($file)
    foreach($item in $zip.items())
    {
        $shell.Namespace($destination).copyhere($item)
    }
}

Dir *.nupkg | rename-item -newname {  $_.name  -replace ".nupkg",".zip"  }

Expand-ZIPFile "Package.1.0.0.zip" “DESTINATION_PATH”
UsmanShabbir
źródło
2
Czy cierpisz na ten sam problem, o którym wspomniał powyżej Oli Wennell? tj. na przykład „A + B.txt” zostanie wyodrębniony jako „A% 2B.txt”?
Rahatur,
1

Z PowerShell 5.1 (moduł PackageManagement)

Install-Package -Name MyPackage -Source (Get-Location).Path -Destination C:\outputdirectory
Mariusz
źródło
1

To zadziałało dla mnie:

Rename-Item -Path A_Package.nupkg -NewName A_Package.zip

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
christiandersen
źródło