There's not a copy of the XML docs for FSharp.Core in the SDK. This means that when tooling like FSAC looks for documentation XML for standalone scripts that use the implicit FSharp.Core reference from the SDK, those scripts don't get XML documentation for core library features.
Repro steps
Provide the steps required to reproduce the problem:
printfn "hi"You'll get the signature, but not the detailed documentation because FSharp.Core.xml isn't colocated with FSharp.Core.dll.
You _do_ get docs for all other BCL types that you use, because those XML files are deployed alongside the ref assemblies.
Expected behavior
We get detailed documentation for members in FSharp.Core.
Actual behavior
We get no detailed documentation for members in FSharp.Core.
Known workarounds
Use an explicit reference to FSharp.Core from your central nuget cache.
Content of FSharp shipped wth 3.1.200 SDK on fresh devcontainer instance
root@847477f9f59b:~/workspace# ls /usr/share/dotnet/sdk/3.1.200/FSharp/ -a
. Microsoft.FSharp.NetSdk.props default.win32manifest fsi.exe ru
.. Microsoft.FSharp.NetSdk.targets es fsi.runtimeconfig.json tr
FSharp.Build.dll Microsoft.FSharp.Overrides.NetSdk.targets fr it zh-Hans
FSharp.Compiler.Interactive.Settings.dll Microsoft.FSharp.Targets fsc.deps.json ja zh-Hant
FSharp.Compiler.Private.dll Microsoft.Portable.FSharp.Targets fsc.exe ko
FSharp.Core.dll cs fsc.runtimeconfig.json pl
FSharp.DependencyManager.dll de fsi.deps.json pt-BR
@Krzysztof-Cieslak, That version of FSharp.Core, is not really for referencing or deployment. We expect netsdk developers to get FSharp.Core using a PackageReference. Those assemblies, are simply implementation details of of fsc.exe and fsi.
I hope this clears things up.
Kevin
@KevinRansom this is the only stable location of FSharp.Core.dll that we can use when we create FSharpProjectOptions for dotnet fsi based scripting experience in the editor. I guess you haven't hit this problem as you're still using full framework scripting in VS.
I'd weigh in and say that if the point of the editor is to show the same environment as the user would get when executing dotnet fsi, the editor _must_ use the FSharp.Core from the SDK. to do otherwise would invite drift.
@krzystof, that is a good point. And deserves consideration.
What kind of consideration should we have here? I basically agree with the premise. How much does it complicate how we ship?
Most helpful comment
@krzystof, that is a good point. And deserves consideration.