Nuget Pack不能正确携带依赖版本

时间:2019-03-22 14:36:52

标签: nuget nuspec

我有从两个项目创建的Nuget软件包:foo.csprojbar.csproj。使用nuget update时,我希望bar更新foo到匹配latest version的3.0。*,并拒绝所有3.1。*:

barpackages.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>

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

我如何使nuget updatenuget pack一起工作,以使最新的foo 3.0。*版本(在本示例中为3.0.4)保持最新状态?

1 个答案:

答案 0 :(得分:0)

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