Исключение F# Interactive Development DirectoryNotFoundException: не удалось найти часть пути ‘C:UsersBobAppDataLocalTempMyFolder ‘

#f# #directory #f#-interactive #getfiles

#f# #каталог #f #-интерактивная #getfiles

Вопрос:

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

 let files = Directory.GetFiles("MyFolderPath")
  

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

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

Боб

Ответ №1:

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

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

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

 Directory.GetCurrentDirectory()
  

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

 Directory.SetCurrentDirectory(...)
  

Ответ №2:

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

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