nuget安装创建子文件夹

时间:2017-10-18 16:20:53

标签: visual-studio nuget

我运行以下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子文件夹。

命令中是否有一个我可以包含的选项,它不会创建子文件夹?

2 个答案:

答案 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\" />