nuspec依赖项allowedVersions是什么意思?

3
我有一个nuspec文件,用于构建NuGet软件包。我想控制依赖项,允许使用一系列版本,但仍需安装特定版本。
基本上如下(无效语法):<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版本?
有什么提示吗?
1个回答

1

可以使用版本范围语法在nuspec文件中指定接受的版本范围。接受6到(包括)9之间主要版本的所有版本将被指定为[6.0.0, 10.0.0)

我从你的问题中理解到,你想指定一个接受的版本范围,但是你想强制安装某个特定的版本。我不知道有什么方法可以实现这一点,但我也看不到这样做的必要性:通过指定接受的版本范围,nuspec文件指定了该包与依赖包的哪些版本兼容。因此,所有接受的版本都应该可以使用。

强制安装特定版本与此兼容性声明相矛盾。这听起来好像你想要实现不同的目标:验证应用程序中安装了一致的NuGet包版本。然而,这应该在消费方解决,即安装NuGet包的解决方案。假设nuspec文件定义了一个包A,它接受[6.0.0, 10.0.0)版本的Microsoft.CrmSdk.CoreAssemblies,但是消费方解决方案应始终使用版本8.2.0.2。那么,首先应该在那里安装此版本8.2.0.2,然后可以安装当前版本的包A,找到其对Microsoft.CrmSdk.CoreAssemblies的依赖已经解决。
为了实现一致的消费方解决方案,我们在CI服务器上实施检查,验证每个包在所有项目中引用了恰好一个版本。通过这种方式,我们可以获得一致的产品,同时保持实际的NuGet包灵活,以便在其他产品中使用不同版本的依赖包。

你说得完全正确。我太专注于NuGet文件的安装过程,而忽略了依赖项可以/正在在使用方面进行控制这一事实。这个洞察力解决了我的问题,谢谢。 - Gaute Odin Alvestad

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