Ecco lo scenario:In che modo il comando F # Interactive #I è a conoscenza del percorso del progetto?
- Aprire Visual Studio. Questo è stato fatto in VS2010 Pro.
- Aprire F # Interactive all'interno di Visual Studio
- Apri progetto con file di FSX
Nota: Progetto e file di FSX sono inE:\<directories>\fsharp-tapl\arith
inviare comandi al F # Interactive dal file FSX
> System.Environment.CurrentDirectory;; val it : string = "C:\Users\Eric\AppData\Local\Temp"
non ero aspettarsi una directory Temp ma ha senso.
> #r @"arith.exe" Examples.fsx(7,1): error FS0082: Could not resolve this reference. Could not locate the assembly "arith.exe". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. (Code=MSB3245) Examples.fsx(7,1): error FS0084: Assembly reference 'arith.exe' was not found or is invalid
L'errore di comando #r mostra che F # Interactive attualmente non conosce la posizione del arith.exe.
> #I @"bin\Debug" --> Added 'E:\<directories>\fsharp-tapl\arith\bin\Debug' to library include path
Quindi diciamo a F # Interactive la posizione di arith.exe. Si noti che il percorso NON è un percorso assoluto ma un sotto percorso del progetto. Non l'ho detto F # Interactive l'ubicazione del progetto arith
E:\<directories>\fsharp-tapl\arith
> #r @"arith.exe" --> Referenced 'E:\<directories>\fsharp-tapl\arith\bin\Debug\arith.exe'
E F # Interactive trova correttamente arith.exe riferire il percorso assoluto corretto.
> open Main > eval "true;" ;; true val it : unit =()
Ciò conferma che arith.exe è stato correttamente trovato, caricato e funziona.
Quindi, in che modo il comando F # Interactive #I conosce il percorso del progetto poiché la directory corrente non è di aiuto?
Quello che sono veramente dopo è da F # Interactive come si ottiene il percorso del progetto, E:\<directories>\fsharp-tapl\arith
.
EDIT
> printfn __SOURCE_DIRECTORY__;;
E:\<directories>\fsharp-tapl\arith
val it : unit =()
Questo è veramente utile grazie ... per chiunque sia interessato Mathias Brandewinder ha alcune grandi punte [ ] (http: // brandewinder.com/2016/02/06/10-fsharp-scripting-tips /) per lavorare negli script fsx. Ho avuto un problema nel tentativo di accedere ai pacchetti di nuget da un file di script all'interno di una libreria, #I @ ".. \ packages" l'ha risolto –