【问题标题】:UnPack NuGet package that gets created on build解压在构建时创建的 NuGet 包
【发布时间】:2021-05-13 02:18:17
【问题描述】:

我正在尝试解压缩在构建期间创建的 nuget 包。

我的Directory.Build.props 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project>
    <PropertyGroup>
        <RestorePackagesPath>C:\packages</RestorePackagesPath>
    </PropertyGroup>
    <PropertyGroup>
        <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
        <PackageOutputPath>C:\LocalNuGetPackages</PackageOutputPath>
    </PropertyGroup>
    <PropertyGroup>
        <Version>1.0.0.1</Version>
    </PropertyGroup>
    <Target Name="UnPack" AfterTargets="Pack">
        <Exec Command="nuget install $(PackageId) -Version $(PackageVersion) -Source C:\LocalNuGetPackages -OutputDirectory C:\packages" />
    </Target>
</Project>

但这会提供与 Visual Studio 不同的目录结构。

Visual Studio 生成以下目录

C:\packages\$(PackageId)\$(PackageVersion)\

但是使用的命令(nuget install)会产生

C:\packages\$(PackageId).$(PackageVersion)\

有没有办法调用 Visual Studio“内部”nuget 来获得相同的目录结构,或者我是否缺少启用此结构的参数? 目前我正在使用来自https://www.nuget.org/downloads 的 nuget.exe,我已将其添加到系统变量中的 PATH 中。

旁注,我不是想将 NuGet 包安装到任何项目,我只是想像 Visual Studio 那样解压它。

【问题讨论】:

    标签: visual-studio msbuild nuget csproj


    【解决方案1】:

    就是这样设计的。全局 nuget 缓存始终使 nuget 路径类似于 package_id/version/xxx。这就是 VS IDE 将 NuGet 包解压到全局缓存机制中的方式。

    当你使用nuget installpackages.config解决方案文件夹下的packages文件夹时,它实际上喜欢package_id.version/xxx

    这种差异不是我们可以处理的,可以属于设计本身。所以我有reported the issue to the Team

    如果我没有详细描述,您可以投票并添加任何 cmets。希望它能尽快解决您的困惑。

    【讨论】:

      【解决方案2】:

      正如@Perry 创建的github issue 中所指出的那样,我实际上正在寻找的命令是

      nuget add "C:\LocalNuGetPackages\castle.core.4.4.0.nupkg" -Source C:\packages -expand
      

      代替

      nuget install castle.core -Version 4.4.0 -Source C:\LocalNuGetPackages -OutputDirectory C:\packages
      

      add 命令无法从“源”(例如 NuGet.org 或 C:\LocalNuGetPackages)获取 nuget 包,您已经需要下载并准备好解包的 *.nupkg

      但是这种缺乏能力与我的情况无关,因为在构建时我正在创建*.nupkg,它们可供我解压。

      不要对add 中称为-Source 的参数感到困惑,它实际上相当于install 命令中的-OutputDirectory

      因此,对于其他用户/情况,最好让 install 命令执行不同的目录结构,但对我来说,add 是我想要的。

      【讨论】:

        猜你喜欢
        • 2018-08-20
        • 2022-11-30
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多