创建两个具有依赖关系的Nuget包

时间:2016-06-15 10:46:04

标签: c# build nuget nuget-package

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

我在同一解决方案中从两个不同的项目创建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没有获得项目的预发布依赖关系。

为什么会这样?

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

1 个答案:

答案 0 :(得分:1)

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

  

$ version $ token始终是程序集版本的替代品   被建。在指定-Version开关时,您将覆盖   版本元素的内容并没有为其提供新值   $ version $ token。

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

-Properties "PackageVersion=1.0.0-beta1"

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

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