我有一个构建nuget包的nuspec文件。我想控制依赖,我允许一系列的版本,但总是安装一个特定的版本。
基本上是这样(无效语法):<dependency id="Microsoft.CrmSdk.CoreAssemblies" version="8.2.0.2" allowedVersions="6.0.0" />
我希望nuget to依赖项接受6或更高(最多9),但始终希望它默认安装8.2.0.2。
如果我有version="6.0.0",它总是安装6版本?
有什么建议吗?
发布于 2018-02-27 18:22:17
可以使用version-range syntax在nuspec-file中指定可接受的版本范围。接受主版本在6和(包括)9之间的每个版本将由[6.0.0, 10.0.0)指定。
我从你的问题中理解的是,你想指定一个接受的版本范围,但你想强制安装某个版本。据我所知,没有办法实现这一点,但我也看不到对它的要求:通过指定一个可接受的版本范围,nuspec-file指定了这个包与哪些版本的依赖包兼容。因此,所有被接受的版本都应该可以工作。
在我看来,强制安装某个版本与此兼容性声明相矛盾。这听起来像是您想要实现一个不同的目标:验证应用程序中是否安装了一致版本的NuGet包。然而,这应该在消费端解决,即安装NuGet包的解决方案。假设nuspec-file定义了一个接受来自Microsoft.CrmSdk.CoreAssemblies的所有版本[6.0.0, 10.0.0)的包A,但是使用的解决方案应该始终使用版本8.2.0.2。然后应该首先在那里安装这个版本的8.2.0.2,然后可以安装包A的当前版本,发现它对Microsoft.CrmSdk.CoreAssemblies的依赖已经解决了。
为了实现一致的消费解决方案,我们在CI服务器上实现了检查,以验证每个包在所有项目中只引用了一个版本。通过这种方式,我们可以获得一致的产品,同时保持实际NuGet包的灵活性,以便在其他产品中与不同版本的依赖项包一起使用。
https://stackoverflow.com/questions/48579146
复制相似问题