2013-05-16 168 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

相关问题