我有一个构建nuget-package的nuspec文件。我想控制依赖项,我允许一系列版本,但总是安装一个特定版本。
基本上这是(无效的语法):
<dependency id="Microsoft.CrmSdk.CoreAssemblies" version="8.2.0.2" allowedVersions="6.0.0" />
我希望nuget依赖于接受6或更高(最多9),但总是希望它默认安装8.2.0.2。
如果我有版本=“6.0.0”,它将始终安装6版本?
任何提示?
答案 0 :(得分:0)
可以在带有version-range syntax的nuspec文件中指定可接受的版本范围。接受主要版本介于6和(包括)9之间的每个版本都将由[6.0.0, 10.0.0)
指定。
我从您的问题中了解到,您希望指定一个可接受的版本范围,但是您想要强制安装某个版本。我无法实现此目的,但我也没有看到它的要求:通过指定可接受的版本范围,nuspec-file指定此包与哪些版本的依赖包兼容。因此,所有接受的版本都应该有效。
在我看来,强制安装某个版本与此兼容性声明相矛盾。这听起来好像您想要实现不同的目标:验证应用程序中是否安装了一致版本的NuGet包。然而,这应该在消费方面解决,即安装NuGet包的解决方案。假设nuspec文件定义了一个接受来自[6.0.0, 10.0.0)
的所有版本Microsoft.CrmSdk.CoreAssemblies
的包A,但是消费解决方案应始终使用版本8.2.0.2
。然后应该首先安装此版本8.2.0.2
,之后可以安装当前版本的软件包A,找到它已经解析的Microsoft.CrmSdk.CoreAssemblies
依赖项。
为了实现一致的消费解决方案,我们在CI服务器上实施检查,以验证在一个版本中的所有项目中是否引用了每个包。通过这种方式,我们可以获得一致的产品,同时保持实际的NuGet包灵活,以便与其他产品中的不同版本的依赖包一起使用。