F# Interactive Developement DirectoryNotFoundException: не удалось найти часть пути «C:\Users\Bob\AppData\Local\Temp\MyFolder\»

При использовании интерактивного F #, очевидно, эта строка кода будет искать путь, указанный в строке темы.

let files = Directory.GetFiles("MyFolderPath")

Есть ли способ настроить интерактив для поиска в той же папке, из которой запущен текущий файл fsx? Или какой-либо способ контролировать это поведение вообще? Я привык к тому, что поиск начинается в bin\Debug, и такое поведение сбивает меня с толку.

Заранее спасибо,

Боб


person Beaker    schedule 13.04.2011    source источник


Ответы (2)


Это зависит от того, где запущен процесс fsi.exe. Fsi отделен от IDE, он не знает, какой файл открыт. При запуске Visual Studio текущим каталогом для fsi является временная папка.

Если вы запустите файл fsx (fsi foo.fsx или щелкните правой кнопкой мыши «Запустить с F# Interactive»), fsi запустится из текущего каталога.

Чтобы увидеть, где вы находитесь (в каком каталоге), вы можете сделать:

Directory.GetCurrentDirectory()

Чтобы изменить каталог, используйте эту команду:

Directory.SetCurrentDirectory(...)
person Laurent    schedule 13.04.2011

Интерактивный F# полностью независим от текущей программы F# (фактически можно представить ее как работающую в отдельной оболочке CMD). Так что, боюсь, не будет простого способа получить открытый в данный момент файл .fsx.

Возможно, вы сможете получить что-то из fsi.CommandLineArgs, но у меня нет под рукой VS, чтобы подтвердить это.

person Johannes Rudolph    schedule 13.04.2011