I'd appreciate some help as I feel confused.
If I am to believe this page, the best way to deploy FSharp core with my application is to copy the FSharp.Core.dll along with the app binaries ("xcopy deployment").
In compiled applications, you should never assume that FSharp.Core is in the GAC ("Global Assembly Cache"). Instead, you should deploy the appropriate FSharp.Core as part of your application.
So far so good, I feel totally comfortable with that ... on Windows. However, regarding Mono, the same page reads:
Standard installations of F# tools on Linux and Mac on Mono also install the latest FSharp.Core into the GAC. They also add machine-wide binding redirects for that component. That means that, for those machines, the latest installed FSharp.Core will be used by applications
which kind of hints that one should not deploy a copy of FSharp core with an application and the correct version of FSharp core will be picked up from the Mono GAC. I take two issues with this:
- This forces to have two different deployment scenarios for Windows and Linux;
- On Mono, this potentially forces usage of an older FSharp code than one that is available in the latest Visual Studio.
Both issues could have probably been addressed by always building FSharp core from GitHub sources along with the app but this does not look like an elegant solution either. So I am wondering what's the right way to always use the latest FSharp core regardless of the platform (if that's at all possible)?