使用命令行提取Nupkg文件

Lew*_*wis 84 nuget

首先,在处理某些.nupkg文件时,我根本不想使用Visual Studio.

我知道有一个名为NuGet Package Explorer的工具,它可以使用gui将nupkg文件导出到某个文件位置,但是我想设置一个MSBuild任务来运行和解压缩大约50个.nupkg文件,使用命令行.

我的问题是,是否有一个工具可以通过命令行使用,它将.nupkg文件解压缩到指定的文件位置?

Cal*_*len 130

NuPKG文件只是zip文件,因此任何可以处理zip文件的东西都应该能够处理nupkg文件,即7zip.

  • 这有一个附带条件,即NuGet似乎对文件名进行某种编码.因此,如果您使用zip工具,例如,您名为"A + B.txt"的文件将被提取为"A%2B.txt".使用nuget install可以避免这种情况(根据Andy的回答) (14认同)
  • 文件编码问题已在 4.7.0+ 中修复 (2认同)

And*_*ndy 98

您还可以使用NuGet命令行,方法是将本地主机指定为安装的一部分.例如,如果您的包存储在当前目录中

nuget install MyPackage -Source %cd% -OutputDirectory packages
Run Code Online (Sandbox Code Playgroud)

将它解压缩到目标目录中.

  • 请注意,MyPackage实际上是.nuspec文件中指定的包ID,而不是文件名. (12认同)
  • Fwiw,在powershell中,命令看起来像:nuget install MyPackage -Source $ pwd -OutputDirectory包 (7认同)
  • 我使用文件目录的绝对路径来让 -Source 为我工作。我没有包括包名。 (4认同)

小智 5

做了同样的事情,像这样:

\n\n
clear\ncd PACKAGE_DIRECTORY\n\nfunction Expand-ZIPFile($file, $destination)\n{\n    $shell = New-Object -ComObject Shell.Application\n    $zip = $shell.NameSpace($file)\n    foreach($item in $zip.items())\n    {\n        $shell.Namespace($destination).copyhere($item)\n    }\n}\n\nDir *.nupkg | rename-item -newname {  $_.name  -replace ".nupkg",".zip"  }\n\nExpand-ZIPFile "Package.1.0.0.zip" \xe2\x80\x9cDESTINATION_PATH\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n

  • 这是否与上面提到的 Oli Wennell 遇到同样的问题?例如,“A+B.txt”将被提取为“A%2B.txt”? (2认同)

Sha*_*uti 5

将文件重命名为.zip,然后将其解压缩。