Nuget预发布包之间的依赖关系

9
情景是使用NuGet进行包管理。
假设您有一个依赖于PackageB的PackageA,您发布了它们两个,因此每当您发布PackageA时,都会指定PackageB的版本范围。
现在这两个包都会随着Build自动发布,并使用SemVer(GitVersion.exe),PackageA的6.0.0版本声明需要至少6.0.0版本的Package B。如果包处于稳定版本,则可以完美地工作。
实际上,对于这两个包来说,没有6.x.x稳定版本可用,如果我安装PackageA的预发行版本,它会抱怨因为它需要至少6.0.0版本的PackageB,但是packageB只有6.0.0-prerelease版本。
这里是错误信息。
无法解析依赖项。'PackageB 6.0.0-unstable0066'与'PackageA 6.0.0-unstable0015约束:PackageB(> = 6.0.0)'不兼容。
我的问题是,如何正确地管理预发布版本的包依赖关系?
谢谢。

1
实际上,这个问题是由于预发布的6.0.0版本被认为比6.0.0更低的数字,这是有道理的,因为它们不稳定。这导致了一个可能的答案,PackageA的6.0.0预发布版本应该声明对PackageB最新稳定版本以上的依赖关系,但在构建过程中自动处理可能会很麻烦。 - Alkampfer
你尝试过在依赖项上定义一个预发布版本约束吗?<dependency id="PackageB" version="[6.0.0-unstable00011,)" /> - Matt Ward
实际上,我已经解决了需要一个大于旧发布版的最新号码的版本的问题。因此,如果最新的5.x版本是5.4,则6.0软件包需要最低版本为5.5,这将自动包括所有的6.0.0-xxxxxxx。 - Alkampfer
2
我会将你解决问题的方法作为答案添加进去。 - Matt Ward
实际上这并不是一个非常好的解决方案,所以我认为它不值得发布。 - Alkampfer
1个回答

3
对我来说,这是NuGet的明显错误,因为即使您明确添加对 PackageB 6.0.0-unstablewhatever 的引用,NuGet 仍声称包不兼容。更准确地说,如果您使用“package references”引用,则会出现此问题。如果您使用旧的 package.config 格式,则 NuGet 可以接受预发行版软件包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接