Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Create an F# Project in VSCode

DZone's Guide to

Create an F# Project in VSCode

In this post we take a look at how to create an F# project using VSCode. (It's nice when an article does exactly what the title says it does, isn't it?)

· Web Dev Zone
Free Resource

Learn how to build modern digital experience apps with Crafter CMS. Download this eBook now. Brought to you in partnership with Crafter Software

Prerequisites

Step-by-step Instructions

  • Create new directory
  • Move to new directory
  • At the console type Code . or open VSCode and then open the new directory you just created
  • Press [Shift] [Command/Ctrl] [P] and type F#
  • Select New Project
  • Choose classlib or console or other project type for the production project
  • Choose the project directory (if left empty, current directory will be used)
  • Provide a project name (using production.fsproj for this example)
  • Press [Shift] [Command/Ctrl] [P] and type FAKE
  • Choose Default build, you should see an output similar to this:
    Checking Paket version (downloading latest stable)...
    Paket.exe 3.33.5 is up to date.
    Paket version 3.33.5
    0 seconds - ready.
    Building project with version: LocalBuild Shortened DependencyGraph for Target Build: <== Build <== Clean ... 
  • Press [Shift][Command/Ctrl][P] and type F#
  • Select New Project
  • Choose fsunit for test code
  • Choose the project directory (if left empty current directory will be used)
  • Provide a project name (using test.fsproj for this example)
  • Open up the test.fsproj file
  • Press [Shift][Command/Ctrl][P] and type F#
  • Select Add Project Reference
  • Choose test.fsproj project as the project that you want to edit
  • Choose production.fsproj project as the reference you want to add
  • Verify that test.fsproj has been changed and contains a reference to production.fsproj
    ...
    <ItemGroup>
      <ProjectReference Include="../production/production.fsproj">
        <Name>production.fsproj</Name>
        <Project>{df896c20-dc7e-4d4d-90da-546d6154d641}</Project>
      </ProjectReference>
    </ItemGroup>
    ...

  • Press [Shift][Command/Ctrl][P] and type paket
  • Select Add Nuget Package
  • Type Nunit.Console
  • Verify that paket.dependencies gets updated with new dependency
    source https://www.nuget.org/api/v2
    nuget FAKE
    nuget FSharp.Core
    nuget FsUnit
    nuget FsCheck
    nuget nunit.console // <- !!!This line should be present!!!

  • Open build.fsx
  • Add open Fake.Testing after open Fake
    open Fake
    open Fake.Testing // <--!!!Add this line!!!

  • Add the test task
    let testAssemblies = !! (buildDir + "*Tests.dll") // <--!!!Add this line!!!
    Target "UnitTests" (fun _ -> testAssemblies |> NUnit3 id) // <--!!!Add this line!!!

  • Add UnitTests to the build
    "Clean"
    ==> "Build"
    ==> "UnitTests" // <--!!!Add this line!!!
    ==> "Deploy"
    RunTargetOrDefault "Build"

  • Press [Shift][Command/Ctrl][P] and type FAKE
  • Choose build
  • Choose UnitTests, you should see an output similar to this:
    Checking Paket version (downloading latest stable)...
    Paket.exe 3.33.5 is up to date.
    Paket version 3.33.5
    0 seconds - ready.
    Building project with version: LocalBuild Shortened DependencyGraph for Target UnitTests: <== UnitTests <== Build <== Clean ... 
    Voila!

Bonus

  • Press [Shift] [Command/Ctrl] [B]
  • Should show an error and you can choose to edit. Edit the configuration to run the build script
    {
      // See https://go.microsoft.com/fwlink/?LinkId=733558
      // for the documentation about the tasks.json format
      "version": "0.1.0",
      "command": "./build.sh", // <--!!!Modify this line to call your build script (build.sh on mac/linux) or (build.cmd on windows)!!!
      "isShellCommand": true,
      "args": [], // <--!!!Modify this line to remove arguments!!!
      "showOutput": "always"
    }

  • Press [Shift] [Command/Ctrl] [B], you should see an output similar to this:
    Checking Paket version (downloading latest stable)...
    Paket.exe 3.33.5 is up to date.
    Paket version 3.33.5
    0 seconds - ready.
    Building project with version: LocalBuild
    Shortened DependencyGraph for Target Build:
    <== Build
     <== Clean
    ...

This article was first published on the Codurance blog.

Crafter is a modern CMS platform for building modern websites and content-rich digital experiences. Download this eBook now. Brought to you in partnership with Crafter Software.

Topics:
f# ,vscode ,web dev ,tutorial

Published at DZone with permission of Pedro Santos, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}