What tooling do you use for F# on .NET Core

kspeakman

Kasey Speakman

Posted on January 26, 2018

What tooling do you use for F# on .NET Core

The Problem

I have tried F# on .NET Core a number of times now. With the Core 1.x release, and now the Core 2.0 release. Both times I have been disappointed to discover that tooling is still basically broken (compared to .NET Framework F# tooling).

For instance using VS 2017 15.5.whatever, the Add Above and Add Below gestures are entirely missing from the Solution Explorer. So I have to hand-edit the project file to put a new file in the order I want it. Then I have to unload and reload the project. This is a significantly annoying regression from the behavior of .NET Framework projects on the same IDE. Definitely feeling the 2nd-class-citizen sentiment from Microsoft there.

Note for onlookers: Adjusting file order is not me being OCD, it is a very common operation. Because F# uses a single-pass compiler, files are compiled in the order listed in the project file. If you don't keep files in some semblance of dependency order, the code will not compile.

I also tried VS Code with Ionide-F#. It is quite an excellent plugin, but I've had a few problems with it as well. For instance, when I tried to use the Move Up/Down gestures in the F# Solution Explorer, it changed the .fsproj file in such a way that it would no longer open (!!!). I also had the experience when I attempted to add a new project to a solution (also thru F# Solution Explorer), it took on the order of 3 minutes for the operation to complete. (A message bar was stuck at the top saying it was working during that time. Although I could see that the .fsproj file had been added, I could not make use of it.)

The Appeal

So basically my experience so far is that F# tooling for .NET Core is still not-quite-there yet. So I'm wondering how you other F# folks get along on .NET Core. Do you just put up with the irritations or is there some justWork: true setting I can tweak or some other workflow I can use? I could put up with some of it for tinkering, but for our production software I really don't want to have to document all the work-arounds. For now I have kept my projects on Framework, waiting for tooling to catch up. But I have some use cases I am eager to hit with .NET Core (docker/linux). Dear reader, please advise me.

💖 💪 🙅 🚩
kspeakman
Kasey Speakman

Posted on January 26, 2018

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related