【问题标题】:nuspec dependency allowedVersions?nuspec 依赖 allowedVersions?
【发布时间】:2018-07-12 17:54:12
【问题描述】:

我有一个构建 nuget 包的 nuspec 文件。我想控制依赖关系,我允许一系列版本,但总是安装一个特定的版本。

基本上是这样(无效的语法): <dependency id="Microsoft.CrmSdk.CoreAssemblies" version="8.2.0.2" allowedVersions="6.0.0" />

我希望 nuget 依赖接受 6 或更高(最多 9 个),但始终希望它默认安装 8.2.0.2。

如果我有 version="6.0.0",它总是安装 6 版本?

有什么建议吗?

【问题讨论】:

  • * 凹凸 *凹凸 *凹凸

标签: nuget nuspec


【解决方案1】:

可以使用version-range syntax 在 nuspec 文件中指定可接受的版本范围。接受主版本介于 6 和(包括)9 之间的每个版本将由 [6.0.0, 10.0.0) 指定。

我从你的问题中了解到,你想指定一个接受的版本范围,但你想强制安装某个版本。我不知道如何实现这一点,但我也看不到它的要求:通过指定可接受的版本范围,nuspec 文件指定此包与哪些版本的依赖包兼容。因此,所有接受的版本都应该有效。

在我看来,强制安装某个版本与此兼容性声明相矛盾。这听起来好像您想要实现不同的目标:验证是否在应用程序中安装了一致版本的 NuGet 包。然而,这应该在消费端解决,即安装 NuGet 包的解决方案。假设 nuspec 文件定义了一个包 A,它接受来自 Microsoft.CrmSdk.CoreAssemblies 的所有版本 [6.0.0, 10.0.0),但消费解决方案应始终使用版本 8.2.0.2。那么这个版本8.2.0.2应该先安装在那里,然后可以安装当前版本的包A,发现它对Microsoft.CrmSdk.CoreAssemblies的依赖已经解决了。

为了实现一致的消费解决方案,我们在 CI 服务器上实施检查,以验证每个包都在一个版本的所有项目中被引用。通过这种方式,我们获得了一致的产品,同时保持实际的 NuGet 包灵活地与其他产品中不同版本的依赖包一起使用。

【讨论】:

  • 你完全正确。我非常专注于 nuget 文件的安装过程,以至于我忽略了依赖可以/正在被消费端控制。这个见解解决了我的问题,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
相关资源
最近更新 更多