Витяг файлів Nupkg за допомогою командного рядка


105

По-перше, я взагалі не хочу використовувати Visual Studio при роботі з певними файлами .nupkg.

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

Моє запитання: чи є інструмент, який ви можете використовувати за допомогою командного рядка, який розпакує .nupkg файли у вказане місце розташування файлу?

Відповіді:


106

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

nuget install MyPackage -Source %cd% -OutputDirectory packages

розпакує його в цільовий каталог.


15
Лише зауважте, що MyPackage - це фактично ідентифікатор пакета, який вказаний у файлі .nuspec, а не ім'я файлу.
Прут

і вам потрібно виконати його з консолі з правами адміністратора
Sonic Soul

7
Команда Fwiw, в повному складі команда виглядає так: nuget install MyPackage -Source $ pwd -OutputDirectory пакунки
Марк Болтук

Я думаю, що% cd% посилається на поточний каталог. Як я можу посилатися на інший шлях у своїй локальній системі? це не працює, коли я використовую шлях. "./example/path/"
seanbun

1
Я використав абсолютний шлях до каталогу файлів, щоб змусити -Ресурс працювати на мене. Я не вказав назву пакета.
mac10688

146

Файли NuPKG - це лише поштові файли, тому все, що може обробити zip-файл, має обробляти файл nupkg, тобто 7zip.


15
З цим є застереження, яке полягає в тому, що NuGet, здається, робить якесь кодування імен файлів. Отже, якщо ви використовуєте інструмент zip, файл, який ви, наприклад, назвали "A + B.txt", буде вилучений як "A% 2B.txt". Цього уникнути, використовуючи nuget install (відповідно до відповіді Енді)
Олі Веннелл,

1
Проблема кодування файлів була виправлена ​​в 4.7.0+
Фай

15

Перейменуйте його на .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

0

Це працювало для мене:

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.