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