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?)
Join the DZone community and get the full member experience.
Join For FreePrerequisites
- Operating system
- Windows
- MacOS
- Linux
- CLR
- .Net Framework (Windows)
- Mono (MacOs, Linux)
- VSCode
- With ionide extensions for VSCode (http://ionide.io/)
- Ionide-FSharp
- Ionide-FAKE
- Ionide-Paket
- With ionide extensions for VSCode (http://ionide.io/)
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 typeF#
- Select
New Project
- Choose
classlib
orconsole
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 typeFAKE
- 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 typeF#
- 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 typeF#
- 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 toproduction.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 typepaket
- Select
Add Nuget Package
- Type
Nunit.Console
- Verify that
paket.dependencies
gets updated with new dependencysource 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
afteropen 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 typeFAKE
- Choose
build
- Choose
UnitTests
, you should see an output similar to this:
Voila!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 ...
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.
Visual Studio Code
Published at DZone with permission of Pedro Santos, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
TDD vs. BDD: Choosing The Suitable Framework
-
How to Implement Istio in Multicloud and Multicluster
-
Decoding ChatGPT: The Concerns We All Should Be Aware Of
-
A Complete Guide to Agile Software Development
Comments