F # скриптинг: добавить новый каталог через #I

#f# #f#-scripting

#f# #f #-скриптинг

Вопрос:

Как я мог бы заставить это работать?

 #I (__SOURCE_DIRECTORY__   @"binRelease")
  

И вторые вопросы. Возможно ли сделать что-то вроде:

 let path = __SOURCE_DIRECTORY__   @"binRelease"
#I path
  

?

Ответ №1:

Вы не можете. Команды #I и #r на самом деле являются инструкциями предварительного процессора, которые выполняются перед динамической компиляцией кода с помощью fsi, поэтому они поддерживают только строковые литералы. Это логично, если вы подумаете об этом, поскольку упомянутым сборкам, возможно, потребуется скомпилировать код.

Однако команды #r и #I всегда принимают относительные пути как исходящие из расположения скриптов, поэтому этот

 #I @".binRelease"
  

должно работать просто отлично (обратите внимание на точку, чтобы убедиться, что это относительный, а не абсолютный путь).

Обратите внимание, что относительные пути к средам выполнения находятся в рабочем каталоге fsi (обычно во временном каталоге), поэтому вам нужно использовать __SOURCE_DIRECTORY__ при загрузке файлов из ваших сценариев.