如何创建包含预发布的 nuspec 依赖项

Posted

技术标签:

【中文标题】如何创建包含预发布的 nuspec 依赖项【英文标题】:How to create a nuspec dependency which includes prereleases 【发布时间】:2013-01-21 20:56:04 【问题描述】:

一些上下文:

我有 4 个具有依赖项的 nuget 包。它们都处于预发布模式,并且按照自己的节奏从 alpha 发展到“稳定”。我希望能够在依赖定义中指定应该包含预发布,但是当“稳定”版本可用时,它应该更新到稳定版本。

在NuGet Docs 中,版本控制规则定义[] 包含您指定的版本号,() 排除您指定的版本号。

关于 nuspec 文件中版本影响的一些示例:

 <dependencies>
     <dependency id="MyComponent" version="1.2.0" />
 </dependencies>

==> 这将安装 MyComponent 1.2.0 或更高版本。 (不包括预发布 1.2.0-alpha)

 <dependencies>
     <dependency id="MyComponent" version="[1.2.0" />
 </dependencies>

==> 这将安装 MyComponent 1.2.0 或更高版本。 (不包括预发布 1.2.0-alpha)

 <dependencies>
     <dependency id="MyComponent" version="[1.2.0,2)" />
 </dependencies>

==> 这将安装 MyComponent 1.2.0 直到但不包括版本 2.0.0。 (不包括 prerelease 1.2.0-alpha 但包括 prerelease 2.0.0-alpha)

目前我设置:

 <dependencies>
     <dependency id="MyComponent" version="(1.1.32767" />
 </dependencies>

但我觉得这是一种非常丑陋的方式,它并不能真正反映现实。 (如果存在版本 1.1.32767.1 怎么办?)

我想知道如何指定您希望在最低版本中包含预发布版本?

【问题讨论】:

那么给定版本 1.1.32767,您想要包含哪些版本,哪些不包含? 包括 1.2.0-alpha、包括 1.2.0、包括 1.2.1 等。排除应为 1.1.xxx 哪里有 1.1.xxx 低版本或 1.1.32767 的预发布版? 包 X 需要依赖包 Y 版本 1.2.0-alpha 或更高版本。如果我将 1.2.0 放在依赖项中,则不会安装 alpha。 目前安装1.2.0-alpha的唯一方法是将(1.1.32767放在依赖项中。 【参考方案1】:

有一件重要的事情需要注意:

根据预发布,生成的包本身也是预发布。

默认情况下,在定义依赖项的版本范围时会忽略预发布版本,因为它会改变正在生成的包的版本(不知道选择哪个版本)。

理想情况下,在安装过程中检查依赖的版本范围的算法会检查所使用的包是否是预发布的,然后在允许的版本范围内包含或排除预发布的依赖。

我不确定目前是否是这种情况,但看看你的问题,我认为不是。您可能想在http://nuget.codeplex.com 上记录功能请求(或提交拉取请求?)

【讨论】:

您的注释是正确的。我怀疑这确实必须实施

以上是关于如何创建包含预发布的 nuspec 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Angular 9 Elements:如何创建一个独立的 WebComponent(包含所有依赖项)?

如何在创建nuget包时使用-NoDefaultExcludes

如何使用maven shaded插件而不是两个创建一个包含所有依赖项的可执行jar

创建 .deb 安装程序时如何安装依赖项?

OctoPack 何时创建 nuspec 文件?

我应该在存储库中发布nuspec文件吗?