124 people like it.
Like the snippet!
FSX Structure
I use this basic template when writing .fsx files that I might want to compile. It adjusts the difference in command line/entrypoint handling between a script and a compiled assembly. This example shows the details for a WPF script — replace the #r's and/or remove the STAThread for a WinForms or Console script.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
|
#if INTERACTIVE
#r "WindowsBase.dll"
#r "PresentationCore.dll"
#r "PresentationFramework.dll"
#r "System.Xaml"
#endif
open System
open System.Windows
open System.Windows.Controls
let private main (args: string []) =
let w = Window(Title = (sprintf "%A" args))
(new Application()).Run(w)
#if INTERACTIVE
fsi.CommandLineArgs |> Array.toList |> List.tail |> List.toArray |> main
#else
[<EntryPoint; STAThread>]
let entryPoint args = main args
#endif
|
namespace System
namespace System.Windows
namespace System.Windows.Controls
val private main : args:string [] -> int
Full name: Script.main
val args : string []
Multiple items
val string : value:'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = String
Full name: Microsoft.FSharp.Core.string
val w : Window
Multiple items
type Window =
inherit ContentControl
new : unit -> Window
member Activate : unit -> bool
member AllowsTransparency : bool with get, set
member Close : unit -> unit
member DialogResult : Nullable<bool> with get, set
member DragMove : unit -> unit
member Hide : unit -> unit
member Icon : ImageSource with get, set
member IsActive : bool
member Left : float with get, set
...
Full name: System.Windows.Window
--------------------
Window() : unit
val sprintf : format:Printf.StringFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.sprintf
Multiple items
type Application =
inherit DispatcherObject
new : unit -> Application
member FindResource : resourceKey:obj -> obj
member MainWindow : Window with get, set
member Properties : IDictionary
member Resources : ResourceDictionary with get, set
member Run : unit -> int + 1 overload
member Shutdown : unit -> unit + 1 overload
member ShutdownMode : ShutdownMode with get, set
member StartupUri : Uri with get, set
member TryFindResource : resourceKey:obj -> obj
...
Full name: System.Windows.Application
--------------------
Application() : unit
Multiple items
type EntryPointAttribute =
inherit Attribute
new : unit -> EntryPointAttribute
Full name: Microsoft.FSharp.Core.EntryPointAttribute
--------------------
new : unit -> EntryPointAttribute
Multiple items
type STAThreadAttribute =
inherit Attribute
new : unit -> STAThreadAttribute
Full name: System.STAThreadAttribute
--------------------
STAThreadAttribute() : unit
More information