Skip to content

kant2002/FSharpPacker

Repository files navigation

FSharp Packer

This tool allows package FSX files as self-contained executables.

Installation:

dotnet tool install --global FSharpPacker

Nix (Nix/NixOS)

Nix w/ Flakes

nix profile install github:kant2002/FSharpPacker

Run without installing

nix run github:kant2002/FSharpPacker -- --help

Usage

USAGE: fspack <file> [--help] [--framework <framework>] [--verbose] [--noselfcontained] [--aot]

FILE:

<file>                .fsx file to convert to executable file

OPTIONS:

--framework, -f <framework>
                      Specify target framework (e.g. net6.0)
--verbose, -v         Verbose output
--noselfcontained, -nsc
                      Don't publish as self-contained (with dotnet runtime included)
--singefile, -sf      Produce single file
--aot, -aot           Enable AOT-compilation
--help                display this list of options.

Please note that the app is produced as self-contained by default.

Simple usage:

fspack fsx-file.fsx [<additional arguments to dotnet publish>]

For example:

fspack FSharpPacker.Tests\Samples\LoadFile.fsx -o test -r win-x64
test\LoadFile.exe

for AOT build

fspack FSharpPacker.Tests\Samples\LoadFile.fsx -aot -o test-aot -r win-x64 -f net7.0
test-aot\LoadFile.exe

Self-contained with dotnet 7 and a single-file executable:

fspack FSharpPacker.Tests/Samples/LoadFile.fsx  -o test-single-file -r win-x64 -f net7.0 -sf -p:EnableCompressionInSingleFile=true
test-single-file\LoadFile.exe

Supported FSX directives

Directive Status Notes
#load
#r "path\file.dll"
#r "nuget: package"
#r "nuget: package, version"
#load
#i "nuget: source-feed"
#quit
#r "custom: custom-path" This is tricky and require deep involvement with FSharp.Compiler.Services
#I "custom: custom-path-search-hint"

Ignored FSX directives

Directive
#help
#time

Producing Nuget package

dotnet pack FSharpPacker.FSharp -c Release
dotnet tool install FSharpPacker --global --add-source FSharpPacker.FSharp\bin\Release\ 
dotnet tool uninstall -g FSharpPacker