Извлечение файлов Nupkg с помощью командной строки


105

Во-первых, я вообще не хочу использовать Visual Studio при работе с определенными файлами .nupkg.

Я знаю, что есть инструмент под названием NuGet Package Explorer, который может экспортировать файлы nupkg в определенное место с помощью графического интерфейса, но я хочу настроить задачу MSBuild для запуска и распаковки около 50 файлов .nupkg с помощью командной строки.

Мой вопрос: есть ли инструмент, который вы можете использовать через командную строку, который распаковывает файлы .nupkg в указанное расположение файла?

Ответы:


106

Вы также можете использовать командную строку NuGet, указав локальный хост как часть установки. Например, если ваш пакет хранится в текущем каталоге

nuget install MyPackage -Source %cd% -OutputDirectory packages

распакует его в целевой каталог.


15
Просто обратите внимание, что MyPackage на самом деле является идентификатором пакета, который указан в файле .nuspec, а не именем файла.
Род

и вы должны выполнить его с консоли с правами администратора
Sonic Soul

7
Fwiw, в PowerShell команда выглядит так: nuget install MyPackage -Source $ pwd -OutputDirectory packages
Марк Болтук

Я предполагаю, что% cd% относится к текущему каталогу. Как я могу сослаться на другой путь в моей локальной системе? это не работает, когда я использую путь. "./example/path/"
seanbun 04

1
Я использовал абсолютный путь к каталогу файлов, чтобы -Source работал на меня. Я не включил название пакета.
mac10688

149

Файлы NuPKG - это просто zip-файлы, поэтому все, что может обрабатывать zip-файл, должно иметь возможность обрабатывать файл nupkg, то есть 7zip.


15
При этом есть оговорка, заключающаяся в том, что NuGet, похоже, выполняет некоторую кодировку имен файлов. Таким образом, если вы используете zip-архиватор, файл, который вы изначально называли, например, «A + B.txt», будет извлечен как «A% 2B.txt». Этого можно избежать, используя nuget install (согласно ответу Энди)
Оли Веннелл

1
проблема с кодировкой файлов была исправлена ​​в версии 4.7.0+
Фай

15

Переименуйте его в .zip , затем распакуйте.


Это очень старый вопрос, и если вы просто измените его на zip, который не ответит на вопрос, если вы используете инструмент zip, например, файл, который вы изначально назвали «A + B.txt», будет извлечен как «A % 2B.txt "- Вам также не нужно переименовывать его в zip.
Льюис

4

сделал то же самое:

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
Разве это не страдает той же проблемой, о которой Оли Веннелл упомянул выше? например, "A + B.txt" будет извлечен как "A% 2B.txt"?
Рахатур

1

С PowerShell 5.1 (модуль PackageManagement)

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

1

Это сработало для меня:

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

Expand-Archive -Path A_Package.zip -DestinationPath C:\Reference
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.