首先,我不想在处理某些.nupkg文件时使用Visual Studio。使用命令行提取Nupkg文件
我知道有一个名为NuGet Package Explorer的工具,它可以使用gui将nupkg文件导出到某个文件位置,但是我正在设置一个MSBuild任务来运行并解压约50个.nupkg文件,命令行。
我的问题是,有没有一种工具可以通过命令行使用,将解包.nupkg文件到指定的文件位置?
首先,我不想在处理某些.nupkg文件时使用Visual Studio。使用命令行提取Nupkg文件
我知道有一个名为NuGet Package Explorer的工具,它可以使用gui将nupkg文件导出到某个文件位置,但是我正在设置一个MSBuild任务来运行并解压约50个.nupkg文件,命令行。
我的问题是,有没有一种工具可以通过命令行使用,将解包.nupkg文件到指定的文件位置?
您还可以使用的NuGet命令行,通过指定一个本地主机的安装部分。例如,如果您的包存储在当前目录中
nuget install MyPackage -Source %cd% -OutputDirectory packages
会将其解包到目标目录中。
NuPKG文件只是zip文件,所以任何可以处理zip文件的文件都应该能够处理nupkg文件,即7zip。
这是一个附带条件,这是NuGet似乎做某种编码的文件名。因此,如果您使用压缩工具,则例如将原始名称为“A + B.txt”的文件解压缩为“A%2B.txt”。这可以通过使用nuget安装来避免(根据Andy的回答) –
做这样相同的事情:
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”
这个问题与Oli Wennell提到的相同吗?即例如“A + B.txt”将被提取为“A%2B.txt”? – Rahatur
这是问题的真正答案! 10x – mynkow
只需注意MyPackage实际上是在.nuspec文件中指定的Package ID,而不是文件名。 – Rod
,你必须从管理员权限的控制台执行它 –