2013-05-16 170 views
59

首先,我不想在處理某些.nupkg文件時使用Visual Studio。使用命令行提取Nupkg文件

我知道有一個名爲NuGet Package Explorer的工具,它可以使用gui將nupkg文件導出到某個文件位置,但是我正在設置一個MSBuild任務來運行並解壓約50個.nupkg文件,命令行。

我的問題是,有沒有一種工具可以通過命令行使用,將解包.nupkg文件到指定的文件位置?

回答

71

您還可以使用的NuGet命令行,通過指定一個本地主機的安裝部分。例如,如果您的包存儲在當前目錄中

nuget install MyPackage -Source %cd% -OutputDirectory packages 

會將其解包到目標目錄中。

+4

這是問題的真正答案! 10x – mynkow

+7

只需注意MyPackage實際上是在.nuspec文件中指定的Package ID,而不是文件名。 – Rod

+0

,你必須從管理員權限的控制檯執行它 –

93

NuPKG文件只是zip文件,所以任何可以處理zip文件的文件都應該能夠處理nupkg文件,即7zip。

+12

這是一個附帶條件,這是NuGet似乎做某種編碼的文件名。因此,如果您使用壓縮工具,則例如將原始名稱爲「A + B.txt」的文件解壓縮爲「A%2B.txt」。這可以通過使用nuget安裝來避免(根據Andy的回答) –

3

做這樣相同的事情:

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」 
+1

這個問題與Oli Wennell提到的相同嗎?即例如「A + B.txt」將被提取爲「A%2B.txt」? – Rahatur

相關問題