【问题标题】:Nuget pack does not carry dependency versions correctlyNuget 包没有正确携带依赖版本
【发布时间】:2019-08-13 13:55:52
【问题描述】:

我从两个项目创建了 Nuget 包:foo.csprojbar.csproj。在使用nuget update 时,我希望barfoo 更新为匹配3.0.* 的latest version,并拒绝任何3.1.*:

bar packages.config

<packages>
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
  <package id="foo" version="3.0.4" targetFramework="net472" allowedVersions="3.0" />
</packages>

bar.nuspec

<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>var</id>
    <version>3.0.4</version>
    <!-- omitted -->
    <!-- no dependency node in this .nuspec file - good, I think -->
  </metadata>
</package>

在我的 Nuget 提要中,我有:

  • foo.3.0.0.nupkg
  • foo.3.0.1.nupkg
  • foo.3.0.2.nupkg
  • foo.3.0.3.nupkg
  • foo.3.0.4.nupkg

如果我调用 nuget update,它会正确更新 packages.config 文件 - 耶!

但是,当我调用 nuget pack bar.csproj 时,它会生成一个 .nupkg 文件,其中包含以下 bar.nuspec 文件:

<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>var</id>
    <version>3.0.4</version>
    <!-- omitted -->
    <dependencies>
      <dependency id="Newtonsoft.Json" version="12.0.1" />
      <dependency id="foo" version="3.0.0" />
    </dependencies>
  </metadata>
</package>

我希望nuget pack 在.nupkg 文件中生成dependency 节点时遵守packages.config allowedVersions 属性。

我如何让nuget updatenuget pack 一起工作以使bar 与foo 的最新3.0.* 版本(在本例中为3.0.4)保持同步?

【问题讨论】:

    标签: nuget nuspec


    【解决方案1】:

    如果您从 packages.config 文件中删除 allowedVersions 属性,我希望它会按您的意愿工作。

    【讨论】:

    • 同意这将解决 3.0.0 的问题,但我相信我会失去将 nuget update 更新到最新 3.0.* 的能力,但拒绝 3.1.*。 (我将更新我的问题以明确该目标。)
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多