Fsharp: Missing xml documentation for FSharp.Core in SDK deployables

Created on 26 Mar 2020  路  6Comments  路  Source: dotnet/fsharp

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:

  1. Install any .Net Core SDK
  2. Make a script file with the contents printfn "hi"
  3. open the script in ionide
  4. Hover over core library usages

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.

Most helpful comment

@krzystof, that is a good point. And deserves consideration.

All 6 comments

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?

Was this page helpful?
0 / 5 - 0 ratings