Extração de arquivos Nupkg usando linha de comando

105

Em primeiro lugar, não quero usar o Visual Studio de forma alguma ao lidar com determinados arquivos .nupkg.

Eu sei que existe uma ferramenta chamada NuGet Package Explorer e isso pode exportar arquivos nupkg para um determinado local de arquivo usando um gui, mas estou tentando configurar uma tarefa MSBuild para executar e descompactar cerca de 50 arquivos .nupkg, usando a linha de comando.

Minha pergunta é: há uma ferramenta que você pode usar por meio da linha de comando que descompacte arquivos .nupkg em um local de arquivo especificado?

Lewis
fonte

Respostas:

106

Você também pode usar a linha de comando NuGet, especificando um host local como parte de uma instalação. Por exemplo, se o seu pacote está armazenado no diretório atual

nuget install MyPackage -Source %cd% -OutputDirectory packages

irá descompactá-lo no diretório de destino.

Andy
fonte
14
Apenas uma observação de que MyPackage é, na verdade, um ID de pacote especificado no arquivo .nuspec e não um nome de arquivo.
Rod de
e você tem que executá-lo do console com privilégios de administrador
Sonic Soul
7
Fwiw, no PowerShell o comando se parece com: nuget install MyPackage -Source $ pwd -OutputDirectory packages
Mark Boltuc
Acho que% cd% se refere ao diretório atual. Como posso me referir a caminhos diferentes em meu sistema local? não funciona quando uso um caminho. "./example/path/"
seanbun
1
Usei o caminho absoluto para o diretório do arquivo para fazer o -Source funcionar para mim. Não incluí o nome do pacote.
mac10688
146

Os arquivos NuPKG são apenas arquivos zip, portanto, qualquer coisa que possa processar um arquivo zip deve ser capaz de processar um arquivo nupkg, ou seja, 7zip.

Calvin Allen
fonte
15
Há uma condição com isso, que o NuGet parece fazer algum tipo de codificação de nomes de arquivos. Portanto, se você usar uma ferramenta zip, um arquivo originalmente denominado "A + B.txt", por exemplo, será extraído como "A% 2B.txt". Isso é evitado usando a instalação do nuget (conforme a resposta de Andy)
Oli Wennell
1
o problema de codificação do arquivo foi corrigido em 4.7.0+
Fai
15

Renomeie-o para .zip e extraia-o.

Shadi Namrouti
fonte
Esta é uma pergunta extremamente antiga, e se você apenas alterá-la para um zip que não responda à pergunta, se você usar uma ferramenta de zip, um arquivo originalmente denominado "A + B.txt", por exemplo, será extraído como "A % 2B.txt "- Você também não precisa renomeá-lo para zip.
Lewis
4

fez a mesma coisa assim:

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
fonte
2
Será que isso sofre do mesmo problema que Oli Wennell mencionou acima? ou seja, "A + B.txt", por exemplo, será extraído como "A% 2B.txt"?
Rahatur,
1

Com PowerShell 5.1 (módulo PackageManagement)

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

Isso funcionou para mim:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
christiandersen
fonte