Komut satırını kullanarak Nupkg dosyalarını ayıklama


105

Öncelikle, belirli .nupkg dosyalarıyla uğraşırken Visual Studio'yu hiç kullanmak istemiyorum.

NuGet Paket Gezgini adlı bir araç olduğunu biliyorum ve bu, nupkg dosyalarını bir gui kullanarak belirli bir dosya konumuna aktarabilir, ancak komut satırını kullanarak yaklaşık 50 .nupkg dosyasını çalıştırmak ve açmak için bir MSBuild görevi kurmak istiyorum.

Sorum şu, .nupkg dosyalarını belirli bir dosya konumuna açacak komut satırı aracılığıyla kullanabileceğiniz bir araç var mı?

Yanıtlar:


106

Bir yüklemenin parçası olarak yerel bir ana bilgisayar belirterek NuGet komut satırını da kullanabilirsiniz. Örneğin, paketiniz mevcut dizinde saklanıyorsa

nuget install MyPackage -Source %cd% -OutputDirectory packages

onu hedef dizine açacaktır.


15
MyPackage'ın aslında .nuspec dosyasında belirtilen bir Paket Kimliği olduğunu ve bir dosya adı olmadığını unutmayın.
Çubuk

ve bunu konsoldan yönetici ayrıcalıklarıyla yürütmeniz gerekiyor
Sonic Soul

7
Fwiw, powershell'de komut şuna benzer: nuget MyPackage'ı yükle -Source $ pwd -OutputDirectory paketleri
Mark Boltuc

Sanırım% cd% mevcut dizine atıfta bulunuyor. Yerel sistemimdeki farklı yola nasıl başvurabilirim? bir yol kullandığım zaman çalışmıyor. "./example/path/"
seanbun

1
-Source'un benim için çalışmasını sağlamak için dosya dizinine giden mutlak yolu kullandım. Paket adını eklemedim.
mac10688

149

NuPKG dosyaları sadece zip dosyalarıdır, bu nedenle bir zip dosyasını işleyebilen her şey bir nupkg dosyasını, yani 7zip'i işleyebilmelidir.


15
Bununla ilgili bir koşul var, bu da NuGet'in bir tür dosya adlarını kodlaması yapıyor gibi görünmesidir. Dolayısıyla, bir zip aracı kullanırsanız, örneğin "A + B.txt" olarak adlandırdığınız bir dosya "A% 2B.txt" olarak çıkarılacaktır. Bu, nuget yüklemesi kullanılarak önlenir (Andy'nin cevabına göre)
Oli Wennell

1
dosya kodlama sorunu 4.7.0+ sürümünde düzeltildi
Fai

15

Dosyayı .zip olarak yeniden adlandırın , ardından çıkarın.


Bu son derece eski bir sorudur ve soruyu yanıtlamayacak bir zip olarak değiştirirseniz, bir zip aracı kullanırsanız, orijinal olarak "A + B.txt" olarak adlandırdığınız bir dosya örneğin "A % 2B.txt "- Ayrıca zip olarak yeniden adlandırmanıza gerek yoktur.
Lewis

4

aynısını şöyle yaptı:

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”

2
Bunun, Oli Wennell'in yukarıda bahsettiği aynı sorundan muzdarip olması? Örneğin "A + B.txt", "A% 2B.txt" olarak çıkarılacak mı?
Rahatur

1

PowerShell 5.1 (PackageManagement modülü) ile

Install-Package -Name MyPackage -Source (Get-Location).Path -Destination C:\outputdirectory

1

Bu benim için çalıştı:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.