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?

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.


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.


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.


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”

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

0

Isso funcionou para mim:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.