CAREER OPEN HOUSE | 31st Jan, 7pm

We’re hiring Java and .NET Craftspeople in London & Barcelona. Come and meet us at our Career Open House on 31st January to learn more.

Create an F# project in VSCode

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
    ...
    

About the author

Pedro is a software craftsman with over twenty years experience. Passionate about the web, distributed systems and mobile technology. Advocate of agile practices and the software craftsmanship movement. Has been key in bringing Software Craftsmanship practices into several organizations.

Member of developer groups such as: London Software Craftsmanship Community, NSCoders and Agile Barcelona. Frequent speaker on subjects such as: Software Craftsmanship, web and mobile solutions.

Codurance Hiring

We're hiring!

We are hiring Java and .NET Craftspeople in London and Barcelona

Enjoying this article?

Sign up to our monthly newsletter to get content like this in your inbox!

Related Blogs

Codurance Logo

Software is our passion.

We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.

Latest Blogs




Contact Us

15 Northburgh Street
London EC1V 0JR

Phone: +44 207 4902967

Carrer Aragó, 208
08011, Barcelona

Phone: +34 689 723 737

Email: hello@codurance.com