Paket icon indicating copy to clipboard operation
Paket copied to clipboard

Simple `dotnet publish` fails with duplicate FSharp.Core.xml error

Open jwosty opened this issue 3 years ago • 4 comments

Description

Given two projects, a netstandard2.0 library and a net6.0 entry point project, dotnet publish freaks out. Not sure if this is a paket issue, an FSharp.Core issue, or a dotnet SDK issue. I'll start it here for now -- I am happy to file this elsewhere if it's not paket's fault.

Repro steps

Please provide the steps required to reproduce the problem

  1. Create A.fsproj (netstandard2.0) and B.fsproj (net6.0)
  2. Make B reference A
  3. Run the app and observe that this works
  4. Attempt to dotnet publish the app and watch it explode

Repro zip: ConsoleApp.zip

Expected behavior

We get a published output.

Actual behavior

We get the following error:

C:\Program Files\dotnet\sdk\7.0.100-preview.2.22153.17\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path: C:\Users\jwost\.nuget\packages\fsharp.core\6.0.4\contentFiles\any\netstandard2.0\FSharp.Core.xml, C:\Users\jwost \.nuget\packages\fsharp.core\6.0.4\contentFiles\any\netstandard2.1\FSharp.Core.xml. [C:\Users\jwost\source\repos\ConsoleApp\ConsoleApp\ConsoleApp.fsproj]

(Yes, I have .net 7 preview installed, but it still happens on CI with only .net 6 installed)

More info

content: none from https://github.com/dotnet/fsharp/issues/11143 does not appear to help.

Known workarounds

  • Downgrade to FSharp.Core 5.0.2 or earlier (6.0.0 is the first version broken in this way)
  • OR Make the library target netstandard2.1, though this prevents you from referencing it from a .net framework project
  • OR Multi-target the actual platforms your endpoint projects are targeting (e.g. .net 6 + .net framework 4 in my case) - haven't tried this, but I'm sure it would work

jwosty avatar May 13 '22 05:05 jwosty

Simple workaround is to set content: none for the fsharp.core reference. This particular packaging choice is something I've been going back and forth with Kevin on for quite a while.

When using nuget directly, the .net SDK also had to handle this.

baronfel avatar May 13 '22 11:05 baronfel

Wait, you claim that content: none doesn't work. Hmmm.

baronfel avatar May 13 '22 11:05 baronfel

Yeah. I tried it both just for the package and globally in paket.dependencies.

jwosty avatar May 13 '22 13:05 jwosty

Anyone know of a workaround that allows me to use a recent FSharp.Core? This is causing me some major headaches with my app right now. Finding combinations of things in my dependency web that work is starting to get very tricky. @forki or @KevinRansom got any tips perhaps?

jwosty avatar Jun 16 '22 18:06 jwosty