nuspec 依赖允许的版本?

nuspec dependency allowedVersions?

我有一个构建 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 版本吗?

有什么建议吗?

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

指定

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

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

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