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
classliborconsoleor 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
fsunitfor 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.fsprojfile - Press
[Shift][Command/Ctrl][P]and typeF# - Select
Add Project Reference - Choose
test.fsprojproject as the project that you want to edit - Choose
production.fsprojproject as the reference you want to add -
Verify that
test.fsprojhas 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.dependenciesgets 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.Testingafteropen Fakeopen 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 ...