Paket icon indicating copy to clipboard operation
Paket copied to clipboard

Paket 7 wrongly patches dependencies versions in NuSpec for multi target projects

Open orient-man opened this issue 3 years ago • 0 comments

Description

I want to build NuGet package with different fixed versions for different target frameworks. It worked in Paket 6(.2.1) via dedicated dependency groups but stopped with version 7(0.2).

Repro steps

  1. Create paket.dependencies file with 2 groups:
group Net5
  framework: net5.0
  nuget FSharp.Core ~> 5
  ...
group Net6
  framework: net6.0
  nuget FSharp.Core ~> 6
  ...
  1. Create paket.references for project targeting both net5.0 and net6.0:
group Net5
  FSharp.Core
group Net6
  FSharp.Core
  1. Create package with dotnet pack:

Expected behavior

NuSpec:

   <dependencies>
      <group targetFramework="net5.0">
        <dependency id="FSharp.Core" version="5.0.2" exclude="Build,Analyzers" />
      </group>
      <group targetFramework="net6.0">
        <dependency id="FSharp.Core" version="6.0.3" exclude="Build,Analyzers" />
      </group>
    </dependencies>

Actual behavior

NuSpec with same FSharpCore version:

   <dependencies>
      <group targetFramework="net5.0">
        <dependency id="FSharp.Core" version="6.0.3" exclude="Build,Analyzers" />
      </group>
      <group targetFramework="net6.0">
        <dependency id="FSharp.Core" version="6.0.3" exclude="Build,Analyzers" />
      </group>
    </dependencies>

Paket outputs some info:

...FSharp.Core is a direct dependency and requires version patching...

Known workarounds

Downgrade to Paket 6.2.1

orient-man avatar Mar 02 '22 17:03 orient-man