ionide / fstoml

Lightweight TOML based F# project file
MIT License
36 stars 7 forks source link
fsharp toml

fstoml Gitter

FsToml is new, lighweight project file for F#.

Warning! FsToml is experimental project, not recommended to use in production environment

Example

Name            = 'FantasticApp'
OutputType      = 'Exe'
FrameworkVersion = '4.5'

Files = [
    { Compile = "src/file.fs" },
    { Compile = "src/file2.fs", Link = "src/uselessLink.fs" },
    { Compile = "src/file3.fs", Sig = "src/file3.fsi" },
    { None    = "src/script.fsx", Private = true },
]

References = [
    { Reference = "System" },
    { Reference = "FSharp.Core" },
    { Project   = "Deppy.fstoml" },
    { Reference   = "lib/Fable.Core.dll", Private = true },
    { Package   = "Nett" }
]

DebugSymbols = true
DebugType = 'full'
Optimize = false
NoWarn = [52, 40]
OtherFlags = [ '--warnon:1182' ]

[ net ]
   DebugSymbols = false

[ net.Release ]
    Constants = [ 'RELEASE', 'FABLE' ]
    DebugType = 'pdbonly'
    Optimize = true

[ net."4_5".Release.x86 ]
    OutputPath = "bin/Release/x86"

[ net."4_5".Release.x64 ]
    OutputPath = "bin/Release/x64"

Why?

How does it work

fstoml is abstraction layer on top of MsBuild providing more declarative, high level way of defining projects. Under the hood it's translated to normal MsBuild XML .props file and imported by MsBuild whenever it's called. That makes fstoml 100% compatiable with all existing tooling, such as dotnet CLI and different editors.

Contributing and copyright

The project is hosted on GitHub where you can report issues, fork the project and submit pull requests.

The library is available under MIT license, which allows modification and redistribution for both commercial and non-commercial purposes.

Maintainer(s)