【问题标题】:Share versions between Paket dependency groups?在 Paket 依赖组之间共享版本?
【发布时间】:2021-01-26 15:07:15
【问题描述】:

在 Paket 依赖组的示例中,通常有一个“main”和“test”组:

source https://api.nuget.org/v3/index.json

storage: none
framework: netcoreapp3.1, netstandard2.1

nuget FSharp.Core
nuget FParsec



group test

  source https://api.nuget.org/v3/index.json

  nuget FSharp.Core
  nuget FParsec
  nuget xunit 2.4.1
  nuget FsUnit.xUnit 3.8.0

为了在库代码和测试代码中都使用依赖项,我可以将它添加到两个组中。

但是有没有办法说“匹配测试中nuget FParsec的版本和主要组”?

【问题讨论】:

    标签: f# paket


    【解决方案1】:

    我不确定 - 但是如果您从测试组中删除 nuget FParsec 并在 paket.references 中指定主组中的那一个呢?

    paket.references

    FParsec
    
    group test
        xunit
        FsUnit.xUnit
    

    【讨论】:

    • 有趣。那么,如果依赖项位于两个组中(直接或传递)并解析为不同的版本,会发生什么?
    【解决方案2】:

    我建议您不要使用测试组,而是将测试库放在主组中。测试运行中使用的任何包都应与被测试代码使用的版本匹配,因此无需单独解决依赖关系。 latest version of the SAFE template 遵循这种方法。

    如果您的项目/脚本实际上从不共享相同的运行时,组会很有用。这就是 SAFE 模板使用构建组的原因:这些依赖项在 FAKE 脚本中使用,不直接依赖于应用程序代码的其余部分。

    【讨论】:

    • 测试库与主组有何关系?恕我直言,只要 FParsec 留在主组中,将这两件事分开是完全有意义的。
    • 您不能在 .NET 中同时运行同一个库的两个版本。因此,测试库与主组相关,因为测试代码同时运行它们。在这里拥有一个单独的测试组对您有什么好处?
    • 我能想到的第一个是不恢复生产构建的测试包。也许它已经没有意义了,因为已经存在构建优化选项可以处理它......没关系我只是好奇:)
    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多