Home

MissingMethodException when trying to print a string in F#

Hi,

When I try to do a basic printfn call in F#, I get a MissingMethodException: Method not found: 'Void Microsoft.FSharp.Core.PrintfFormat`5..ctor(System.String)'.

The code to repro is simple:

printfn "%s" "Hi"

Any ideas on how to fix this?

Thanks,

Jon

Environment:

LINQPad 6.5.5 (x64)
Windows 10
VS 2019 16.4.1

❯ dotnet --list-sdks
1.1.8 [C:\Program Files\dotnet\sdk]
2.2.109 [C:\Program Files\dotnet\sdk]
2.2.402 [C:\Program Files\dotnet\sdk]
3.0.101 [C:\Program Files\dotnet\sdk]
3.1.100 [C:\Program Files\dotnet\sdk]

Comments

  • You're probably missing the reference assemblies. Click the exclamation mark in the toolbar to restore.

  • Hi, would you be able to point out what assemblies need to be referenced to fix this, exactly? I'm getting this exact error in some code I compile without LINQPad, running fsc.exe in my own application. Microsoft.FSharp.Core.PrintfFormat is, of course, defined in FSharp.Core.dll, which I'm already referencing.

  • You need the reference assemblies for the runtime that you're using (.NET 3.1 or .NET 5). If you have the SDK installed, they are located in %programfiles%\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0. If you don't have the SDK, you can download them from the Microsoft.NETCore.App.Ref NuGet package. I don't know whether fsc.exe has an option to help you with this.

    Your other option is to use dotnet build - I believe this is the recommended solution outside Visual Studio and LINQPad.

  • Using the reference assemblies worked, thank you so much! It was a little trickier than that, because they are sometimes in %ProgramFiles% and sometimes a NuGet package for some reason (even though I do have the SDK).

Sign In or Register to comment.