我运行以下nuget命令从位于C:\ utils的nuget包中提取dll并将其解压缩到C:\ dll。
nuget.exe install -o C:\dll TDS.AppLogger -source C:\utils
将dll解压缩到C:\ dll \ TDS.AppLogger.1.0.0 \ lib \ net452。我不确定为什么要创建TDS.AppLogger.1.0.0 \ lib \ net452子文件夹。
命令中是否有一个我可以包含的选项,它不会创建子文件夹?
答案 0 :(得分:0)
命令中是否有一个我可以包含的选项,它不会创建子文件夹?
我不敢。这是因为此命令不用于从nuget包中提取dll,而是从.nupkg
文件中提取NuGet包。请参阅Install command for NuGet CLI reference,此命令类似于还原,因为它仅以分层布局将软件包添加到磁盘。并且您可以检查有关NuGet CLI reference的命令,命令中没有选项可以从nuget包中提取dll。
要解决此问题,您可以考虑使用.bat文件来提取dll,下面是一个示例代码:
@echo off
echo Extracting all dlls from nugets to folder C:\dll
REM %mypath% is where the batch file is located
set mypath=%~dp0
set temppath=%~dp0temp\
set dllpath=C:\dll\
mkdir %dllpath%
rem traverse all nupkg files
pushd %mypath%
for /r %%a in (*.nupkg) do (
echo \- Processing %%~nxa
REM unzip nuget to %temppath% folder.
powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('%%a', '%temppath%'); }
REM Copy all dlls
pushd %temppath%
for /r %%b in (*.dll) do (
echo \- Found %%~nxb
COPY "%%b" "%dllpath%%%~nxb"
)
popd
REM Delete Temp folder
rd /s /q %temppath%"
)
popd
pause
来自here的源代码。
只需将bat文件放在文件夹下:C:\utils
答案 1 :(得分:0)
@ Leo-MSFT - 感谢您的回复。
我最终使用MSBuild并添加解压缩任务来解压缩nuget包并将其内容提取到目标位置。
<Unzip ZipFileName="$(ReleasePath)\exe\utils\AppLogger.1.0.0.nupkg" TargetDirectory="$(ReleasePath)\exe\dll\" />