fslaborg / Deedle

Easy to use .NET library for data and time series manipulation and for scientific programming
http://fslab.org/Deedle/
BSD 2-Clause "Simplified" License
924 stars 196 forks source link

Moving to FSharp.Core 4.7.2 #520

Closed fractus closed 3 years ago

fractus commented 3 years ago

I noticed that Deedle still uses 4.5.2, and if built together with a .NET Core 3 F# project, there are multiple versions of this package -- later is using 4.7.2. This creates some clashes when trying to import Deedle in Python.NET - depends which DLL is written in the build folder.

I update it in paket.dependencies after deleting the paket.lock but it picks 5.0.0.

Is there an alternative way to upgrade to this?

Thanks

zyzhu commented 3 years ago

The reason to target 4.5.2 was to follow the guideline here. https://github.com/dotnet/fsharp/blob/main/docs/fsharp-core-notes.md#libraries-should-target-lower-versions-of-fsharpcore

In the actual applications I use daily, I do use FSharp.Core 4.7.2 and had no problem. I'm not sure how Python.Net deals with binding redirect.

As for updating dependency to build yourself, you can change FSharp.Core from 4.5.2 to 4.7.2 in paket.dependencies, delete paket.lock and the temporary folder .fake. Then run fake build target allcore. I just did it on my local computer and it worked.

fractus commented 3 years ago

Thanks for your answer - binding redirects is still no fully resolved in windows; see this issue https://github.com/pythonnet/pythonnet/issues/832

For now, I disabled implicit imports (DisableImplicitFSharpCoreReference in fsproj), and added explicitly 4.5.2.