Como o comando F # Interactive #I sabe sobre o caminho do projeto?

Aqui está o cenário:

Abra o Visual Studio. Isso foi feito no VS2010 Pro.Abrir F # interativo no Visual StudioAbra o projeto com o arquivo fsx
Nota: O projeto e o arquivo fsx estão emE:\<directories>\fsharp-tapl\arith

Enviar comandos para o F # Interactive do arquivo fsx

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

Eu não estava esperando um diretório Temp, mas faz sentido.

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

O erro do comando #r mostra que o F # Interactive atualmente não sabe a localização do arith.exe.

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

Então nós dizemos ao F # Interactive a localização do arith.exe. Observe que o caminho NÃO é um caminho absoluto, mas um sub-caminho do projeto. Eu não disse ao F # Interactive a localização do projeto arithE:\<directories>\fsharp-tapl\arith

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

E F # Interactive encontra corretamente arith.exe relatando o caminho absoluto correto.

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

Isso confirma que arith.exe foi encontrado corretamente, carregado e funciona.

Então, como o comando F # Interactive #I conheceu o caminho do projeto, já que o diretório atual não ajuda?

O que eu realmente sou depois é de dentro de F # Interactive como se consegue o caminho para o projeto,E:\<directories>\fsharp-tapl\arith.

EDITAR

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

questionAnswers(1)

yourAnswerToTheQuestion