Skip to content

Registering experience of fresh build of FSharp.sln on fresh machine #17125

Description

@abelbraaksma

I've had working installations of this repo for several years, but recently installed a new workstation and I was wondering how it would go.

It is a lot smoother than it was back in the day, but there are still some things that don't quite work as expected and/or could be improved. Mostly: doing as instructed won't "just work".

System:

  • Windows latest
  • Visual Studio RTM latest
  • .NET 6.0 and .NET 8.0 SDKs.

First attempt

Trying to be naive:

  1. Checkout main, run build.cmd --> success
  2. Open FSharp.sln in Visual Studio
    • first time, asks for SDK and .NET Framework to be installed (as expected from instructions)
    • lot's of errors that .NET SDK cannot be found.
  3. Build in Visual Studio: fails without showing details
  4. Running dotnet tool restore in the root --> error: "The command could not be loaded" (I assume because of global.json)

Second attempt

A little less naive. I ran the following command to install .NET Preview (not in devguide.md, but there they do say you need a specific Preview version):

winget install Microsoft.DotNet.SDK.Preview
  1. Open FSharp.sln in Visual Studio --> less errors
  2. Ctrl-Shift-B (build all) in Visual Studio: fails three projects, something about resources missing (fsi, fsc and Compiler.Service.Tests). Sorry, forgot to copy the error.
  3. Running dotnet tool restore in the root --> success

Then: closed Visual Studio, reopen it again, and recompile. This time success.

Error window shows 630 errors, all of them this:

image


All in all, not too bad. right? I can easily work with and work around these errors, and as mentioned, it is much better than in the (far) past. But I think we can still improve.

My proposal would be something like:

  • auto-install the .NET version (there's an interactive Y/N question, so people can always deny it), if the requested version is not there. Unless this is considered too intrusive.
  • fix the "This construct is deprecated: it is only for use in the F# library" error to pop up (I assume others see this too, no? Or is this a setting in the project or in Visual Studio? It does not prevent building the solution, though.

Still a little surprised though that building through build.cmd goes fine, but building through Visual Studio does not, and requires .NET SDK Preview to be installed globally. Esp because the logs clearly show this, suggesting that it has been installed successfully:

GET https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1
  Attempting to install 'sdk v9.0.100-preview.3.24204.13' from public location.
dotnet-install: Remote file https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.100-preview.3.24204.13/dotnet-sdk-9.0.100-preview.3.24204.13-win-x64.zip size is 309190459 bytes.dotnet-install: Downloaded file https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.100-preview.3.24204.13/dotnet-sdk-9.0.100-preview.3.24204.13-win-x64.zip size is 309190459 bytes.
dotnet-install: The remote and local file sizes are equal.
dotnet-install: Extracting the archive.
dotnet-install: Adding to current process PATH: "D:\projects\OpenSource\fsharp\.dotnet\". Note: This change will not be visible if PowerShell was run as a child process.
dotnet-install: Note that the script does not resolve dependencies during installation.
dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install/windows#dependencies
dotnet-install: Installed version is 9.0.100-preview.3.24204.13
dotnet-install: Installation finished

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions