Using Paket from F# Interactive
This page demonstrates how to use Paket from the F# Interactive.
Download latest paket.exe
(optional)
As first step we need to download and reference the latest Paket executable.
This boilerplate code allows F# scripts to work self-contained without an
installed paket.exe
. Alternativly you can just reference any paket.exe that
you have on your system.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
open System
open System.IO
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
if not (File.Exists "paket.exe") then
let url = "http://fsprojects.github.io/Paket/stable"
use wc = new Net.WebClient()
let tmp = Path.GetTempFileName()
let stable = wc.DownloadString(url)
wc.DownloadFile(stable, tmp)
File.Move(tmp,Path.GetFileName stable)
#r "paket.exe"
Configure which paket.dependencies
file to use
Now we need open the Paket
namespace and to tell Paket which
paket.dependencies
file to use.
1: 2: 3: 4: 5:
open Paket
// Locate the paket.dependencies file.
let dependencies = Dependencies.Locate(__SOURCE_DIRECTORY__)
found: paket.dependencies
Adding and removing NuGet packages
Paket allows to install and uninstall NuGet packages programmatically:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
// Install a package.
dependencies.Add "FSharp.Data"
// Check which version is installed.
dependencies.GetInstalledVersion "FSharp.Data"
val it : string option = Some "2.1.0"
// Remove a package.
dependencies.Remove "FSharp.Data"
// Check again which version is installed.
dependencies.GetInstalledVersion "FSharp.Data"
val it : string option = None
Query the install model
It's possible to do queries against the installed NuGet packages:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
// Install some packages.
dependencies.Add "FSharp.Data"
dependencies.Add "FSharp.Formatting"
dependencies.Add "FsUnit"
// List all installed packages.
dependencies.GetInstalledPackages()
val it : (string * string * string) list =
[("Main", "FSharp.Compiler.Service", "0.0.67"); ("Main", "FSharp.Data", "2.1.0");
("Main", "FSharp.Formatting", "2.4.36"); ("Main", "FsUnit", "1.3.0.1");
("Main", "Microsoft.AspNet.Razor", "2.0.30506.0"); ("Main", "NUnit", "2.6.3");
("Main", "RazorEngine", "3.3.0"); ("Main", "Zlib.Portable", "1.10.0")]
// List only the direct dependencies.
dependencies.GetDirectDependencies()
val it : (string * string * string) list =
[("Main", "FSharp.Data", "2.1.0"); ("Main", "FSharp.Formatting", "2.4.36");
("Main", "FsUnit", "1.3.0.1")]
// List direct dependencies for the given package.
dependencies.GetDirectDependenciesForPackage("Main", "FSharp.Compiler.Service")
val it : (string * string * string) list =
...
// List all usages of a package in Paket.
let paketDependencies = Dependencies.Locate(System.IO.Path.Combine(__SOURCE_DIRECTORY__,".."))
found: D:\code\Paket\paket.dependencies
paketDependencies.FindReferencesFor "UnionArgParser"
val it : string list = ["D:\code\Paket\src\Paket\Paket.fsproj"]
namespace System
namespace System.IO
type Environment =
static member CommandLine : string
static member CurrentDirectory : string with get, set
static member CurrentManagedThreadId : int
static member Exit : exitCode:int -> unit
static member ExitCode : int with get, set
static member ExpandEnvironmentVariables : name:string -> string
static member FailFast : message:string -> unit + 1 overload
static member GetCommandLineArgs : unit -> string[]
static member GetEnvironmentVariable : variable:string -> string + 1 overload
static member GetEnvironmentVariables : unit -> IDictionary + 1 overload
...
nested type SpecialFolder
nested type SpecialFolderOption
static member CommandLine : string
static member CurrentDirectory : string with get, set
static member CurrentManagedThreadId : int
static member Exit : exitCode:int -> unit
static member ExitCode : int with get, set
static member ExpandEnvironmentVariables : name:string -> string
static member FailFast : message:string -> unit + 1 overload
static member GetCommandLineArgs : unit -> string[]
static member GetEnvironmentVariable : variable:string -> string + 1 overload
static member GetEnvironmentVariables : unit -> IDictionary + 1 overload
...
nested type SpecialFolder
nested type SpecialFolderOption
property Environment.CurrentDirectory: string
val not : value:bool -> bool
type File =
static member AppendAllLines : path:string * contents:IEnumerable<string> -> unit + 1 overload
static member AppendAllText : path:string * contents:string -> unit + 1 overload
static member AppendText : path:string -> StreamWriter
static member Copy : sourceFileName:string * destFileName:string -> unit + 1 overload
static member Create : path:string -> FileStream + 3 overloads
static member CreateText : path:string -> StreamWriter
static member Decrypt : path:string -> unit
static member Delete : path:string -> unit
static member Encrypt : path:string -> unit
static member Exists : path:string -> bool
...
static member AppendAllLines : path:string * contents:IEnumerable<string> -> unit + 1 overload
static member AppendAllText : path:string * contents:string -> unit + 1 overload
static member AppendText : path:string -> StreamWriter
static member Copy : sourceFileName:string * destFileName:string -> unit + 1 overload
static member Create : path:string -> FileStream + 3 overloads
static member CreateText : path:string -> StreamWriter
static member Decrypt : path:string -> unit
static member Delete : path:string -> unit
static member Encrypt : path:string -> unit
static member Exists : path:string -> bool
...
File.Exists(path: string) : bool
val url : string
val wc : Net.WebClient
namespace System.Net
Multiple items
type WebClient =
inherit Component
new : unit -> WebClient
member AllowReadStreamBuffering : bool with get, set
member AllowWriteStreamBuffering : bool with get, set
member BaseAddress : string with get, set
member CachePolicy : RequestCachePolicy with get, set
member CancelAsync : unit -> unit
member Credentials : ICredentials with get, set
member DownloadData : address:string -> byte[] + 1 overload
member DownloadDataAsync : address:Uri -> unit + 1 overload
member DownloadDataTaskAsync : address:string -> Task<byte[]> + 1 overload
...
--------------------
Net.WebClient() : Net.WebClient
type WebClient =
inherit Component
new : unit -> WebClient
member AllowReadStreamBuffering : bool with get, set
member AllowWriteStreamBuffering : bool with get, set
member BaseAddress : string with get, set
member CachePolicy : RequestCachePolicy with get, set
member CancelAsync : unit -> unit
member Credentials : ICredentials with get, set
member DownloadData : address:string -> byte[] + 1 overload
member DownloadDataAsync : address:Uri -> unit + 1 overload
member DownloadDataTaskAsync : address:string -> Task<byte[]> + 1 overload
...
--------------------
Net.WebClient() : Net.WebClient
val tmp : string
type Path =
static val DirectorySeparatorChar : char
static val AltDirectorySeparatorChar : char
static val VolumeSeparatorChar : char
static val InvalidPathChars : char[]
static val PathSeparator : char
static member ChangeExtension : path:string * extension:string -> string
static member Combine : [<ParamArray>] paths:string[] -> string + 3 overloads
static member GetDirectoryName : path:string -> string
static member GetExtension : path:string -> string
static member GetFileName : path:string -> string
...
static val DirectorySeparatorChar : char
static val AltDirectorySeparatorChar : char
static val VolumeSeparatorChar : char
static val InvalidPathChars : char[]
static val PathSeparator : char
static member ChangeExtension : path:string * extension:string -> string
static member Combine : [<ParamArray>] paths:string[] -> string + 3 overloads
static member GetDirectoryName : path:string -> string
static member GetExtension : path:string -> string
static member GetFileName : path:string -> string
...
Path.GetTempFileName() : string
val stable : string
Net.WebClient.DownloadString(address: Uri) : string
Net.WebClient.DownloadString(address: string) : string
Net.WebClient.DownloadString(address: string) : string
Net.WebClient.DownloadFile(address: Uri, fileName: string) : unit
Net.WebClient.DownloadFile(address: string, fileName: string) : unit
Net.WebClient.DownloadFile(address: string, fileName: string) : unit
File.Move(sourceFileName: string, destFileName: string) : unit
Path.GetFileName(path: string) : string
val dependencies : obj
val paketDependencies : obj
Path.Combine([<ParamArray>] paths: string []) : string
Path.Combine(path1: string, path2: string) : string
Path.Combine(path1: string, path2: string, path3: string) : string
Path.Combine(path1: string, path2: string, path3: string, path4: string) : string
Path.Combine(path1: string, path2: string) : string
Path.Combine(path1: string, path2: string, path3: string) : string
Path.Combine(path1: string, path2: string, path3: string, path4: string) : string