【问题标题】:Creating two Nuget packages with dependency创建两个具有依赖关系的 Nuget 包
【发布时间】:2016-10-16 10:32:53
【问题描述】:

在问这里之前我已经看了一段时间。希望其他人已经解决了这个问题。

我无法在同一个解决方案中从两个不同的项目创建 nuget 包。一个项目依赖于另一个项目,当我尝试创建预发布版本时,依赖项目中的 nuget 包依赖于已发布的包,而不是预发布的包。

设置如下:

Solution
    Project A
        a.nuspec
    Project B
        b.nuspec

项目 B 有一个对 项目 A 的内部引用。 当我运行命令时

nuget pack b.nuspec -IncludeReferencedProjects -Properties Configuration=Release -version 8.1.0-beta0003

我从 b.nuspec 得到的 nupkg 看起来像这样:

<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
    <metadata>
        <id>project b</id>
        <version>8.1.0-beta0000</version>
        <dependencies>
          <dependency id="project a" version="8.1.0.0" />
        </dependencies>
    </metadata>
</package>

a.nuspec 生成的 nupkg:

<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
    <metadata>
        <id>project a</id>
        <version>8.1.0-beta0000</version>
        <dependencies>
        </dependencies>
    </metadata>
</package>

如您所见,项目 b 没有获得项目 a 的预发布依赖项。

为什么会这样?

构建具有内部引用依赖项的 nuget 包的良好设置是什么?

【问题讨论】:

    标签: c# build nuget nuget-package


    【解决方案1】:

    我在这里也有同样的问题,但在这个问题上找到了解释: https://github.com/NuGet/Home/issues/1795

    $version$ 标记始终是程序集版本的替换, 被建。在指定 -Version 开关时,您将覆盖 版本元素的内容,并且不为 $version$ 令牌。

    也从这个线程,解决方案是将其添加到您的命令行:

    -Properties "PackageVersion=1.0.0-beta1"
    

    然后在您的 .nuspec 文件中,到处使用 $PackageVersion$ 而不是 $version$

    虽然没有测试,我还不知道如何为我的案例获取版本号,但我希望它可以帮助。

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多