FSharp.FsxConfig
1.0.2
dotnet add package FSharp.FsxConfig --version 1.0.2
NuGet\Install-Package FSharp.FsxConfig -Version 1.0.2
<PackageReference Include="FSharp.FsxConfig" Version="1.0.2" />
<PackageVersion Include="FSharp.FsxConfig" Version="1.0.2" />
<PackageReference Include="FSharp.FsxConfig" />
paket add FSharp.FsxConfig --version 1.0.2
#r "nuget: FSharp.FsxConfig, 1.0.2"
#:package FSharp.FsxConfig@1.0.2
#addin nuget:?package=FSharp.FsxConfig&version=1.0.2
#tool nuget:?package=FSharp.FsxConfig&version=1.0.2
FSharp.FsxConfig
A simple tool that allows using fsx files for configuration.
Note
There is a convention in place for the name of the function that is changing the config in the script file: changeConfiguration
Limitations
Doesn't support saving a new configuration at runtime.
Usage example
You can watch the example in tests\FSharp.FsxConfig.Tests or follow the description below:
dotnet new console -lang F#
dotnet add package FSharp.FsxConfig
Change the content of the program.fs with:
open FSharp.FsxConfig
type MyConfiguration = {
athing: int
something: string
}
module MyConfiguration =
let internal Default: MyConfiguration = { athing = 1; something = "default value" }
MyConfiguration.Default
|> applyScriptConfiguration "change app configuration.fsx"
|> Result.bind (applyScriptConfiguration "config.fsx")
|> printfn "Hello from F# %A"
Create some 2 script files (check names from above example, and replace your project build output in the #r include):
#r "bin/Debug/net9.0/REPLACE_ME_WITH_YOUR_PROJECT_NAME.dll"
let changeConfiguration (conf: Program.MyConfiguration) =
// you can have comments, the tooling will let you know if the typing is out of synch
{ conf with athing = conf.athing + 10 }
dotnet run
Troubleshooting
- something is wrong with files location, references, etc. you can see the details of errors in console by enabling verbose messages:
FSharp.FsxConfig.verbose <- true
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FSharp.Compiler.Service (>= 43.12.400)
- FSharp.Core (>= 10.1.400)
-
net8.0
- FSharp.Compiler.Service (>= 43.8.403)
- FSharp.Core (>= 8.0.403)
-
net9.0
- FSharp.Compiler.Service (>= 43.9.303)
- FSharp.Core (>= 9.0.303)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Multi-targets net8.0/net9.0/net10.0 with a matching FSharp.Compiler.Service per target framework to avoid NU1605/NU1608 FSharp.Core warnings.