Woher weiß der Befehl F # Interactive #I über den Projektpfad Bescheid?

Hier ist das Szenario:

Öffnen Sie Visual Studio. Dies wurde in VS2010 Pro durchgeführt.Öffnen Sie F # Interactive in Visual StudioProjekt mit fsx-Datei öffnen
Hinweis: Projekt und fsx-Datei befinden sich inE:\<directories>\fsharp-tapl\arith

Senden Sie Befehle aus einer fsx-Datei an F # Interactive

> System.Environment.CurrentDirectory;; 
val it : string = "C:\Users\Eric\AppData\Local\Temp"

Ich habe kein temporäres Verzeichnis erwartet, aber es macht Sinn.

> #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

Der #r-Befehlsfehler zeigt an, dass F # Interactive den Speicherort von arith.exe derzeit nicht kennt.

> #I @"bin\Debug"
--> Added 'E:\<directories>\fsharp-tapl\arith\bin\Debug' 
to library include path

Also teilen wir F # Interactive den Speicherort der Datei arith.exe mit. Beachten Sie, dass der Pfad KEIN absoluter Pfad ist, sondern ein Unterpfad des Projekts. Ich habe F # Interactive den Speicherort des Arith-Projekts nicht mitgeteiltE:\<directories>\fsharp-tapl\arith

> #r @"arith.exe"
--> Referenced 'E:\<directories>\fsharp-tapl\arith\bin\Debug\arith.exe'

Und F # Interactive findet arith.exe korrekt und gibt den korrekten absoluten Pfad an.

> open Main
> eval "true;" ;;
true
val it : unit = ()

Dies bestätigt, dass arith.exe korrekt gefunden und geladen wurde und funktioniert.

Woher kannte der Befehl F # Interactive #I den Projektpfad, da das aktuelle Verzeichnis keine Hilfe darstellt?

Was ich wirklich nach bin, ist aus F # Interactive, wie bekommt man den Pfad zum Projekt,E:\<directories>\fsharp-tapl\arith.

BEARBEITEN

> printfn __SOURCE_DIRECTORY__;;
E:\<directories>\fsharp-tapl\arith
val it : unit = ()

Antworten auf die Frage(1)

Ihre Antwort auf die Frage