Как команда F # Interactive #I узнает о пути проекта?

Вот сценарий:

Откройте Visual Studio. Это было сделано в VS2010 Pro.Открыть F # Интерактив в Visual StudioОткрыть проект с помощью файла fsx

Примечание: проект и файл fsx находятся вE:\\fsharp-tapl\arith

Отправить команды на F # Interactive из файла fsx

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

Я не ожидал, что каталог Temp, но это имеет смысл.

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

Ошибка команды #r показывает, что F # Interactive в настоящее время не знает местонахождение arith.exe.

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

Поэтому мы сообщаем F # Interactive, где находится файл arith.exe. Обратите внимание, что путь НЕ является абсолютным путем, а является дополнительным путем проекта. Я не сказал F # Interactive, где находится проект арифтаE:\\fsharp-tapl\arith

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

И F # Interactive правильно находит arith.exe, сообщая правильный правильный путь.

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

Это подтверждает, что arith.exe был правильно найден, загружен и работает.

Итак, как команда F # Interactive #I узнала путь проекта, поскольку текущий каталог не помог?

Что мне действительно нужно, так это из F # Interactive, как найти путь к проекту.E:\\fsharp-tapl\arith

РЕДАКТИРОВАТЬ

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

Ответы на вопрос(1)

Ваш ответ на вопрос