2010-03-17 4 views
9

Я пытаюсь попрактиковаться в F #, написав небольшие консольные скрипты в F # вместо моего обычного метода написания сценариев оболочки/пакетных файлов. В настоящее время я запускаю их с помощью «fsi script.fsx [args]». Есть ли способ связать эти файлы fsx с fsi, чтобы я мог запускать их напрямую, как «script.fsx [args]»?Выполнение скриптов F #

+3

Несмотря на то, что писать простые файлы сценариев и запускать их, определенно, это вариант, я думаю, что намного легче изучить F #, если вы используете F # Interactive из Visual Studio. Вы можете начать с создания нового «F # Script» (Файл -> Создать -> Файл ...), а затем начать писать код (в произвольном порядке). Затем вы можете выбрать часть кода и оценить ее в окне F # Interactive, нажав [Alt] + [Enter]. –

+3

@ Томас. Думаю, он имеет в виду, что он пишет сценарии как практику для написания реального кода, который делает реальные вещи, одновременно выполняя потребность в нем (кажется, он пишет много скриптов). –

+0

Tomas: Одна вещь, которая wasn Из вашего описания вам не следует: вам все же нужно вручную открыть окно F # Interactive для трюка Alt-Enter. Но какой хороший трюк! Спасибо! – itowlson

ответ

7

Да, это возможно.

Есть два ключа здесь:

  1. Вы должны связать приложение для выполнения на расширение «.fsx». Точный способ сделать это может немного различаться между версиями операционной системы (я делал это только в прошлом, редактируя реестр напрямую, поэтому я не могу предоставить здесь общее решение); убедитесь, что команда должна быть выполнена действительно включает аргументы сценария (как %*), так что оболочка \ ввод команды с открытым \ в реестре для связывания должен выглядеть ответ

    "c:\Program Files\FSharp-1.9.9.9\bin\fsi.exe" "@%1" %*

    знакомства Gradbot для более подробной информации.

  2. Возможно, вы захотите добавить расширение, которое вы хотите инициировать выполнение сценария («.fsx» в этом случае) в переменную среды PATHEXT, поэтому CMD.exe может найти сценарий, даже если вы не указали расширение скрипта. Предупреждение: если вас беспокоит безопасность вашей системы, пересмотреть этот шаг - факт, что VBScripts зарегистрированы в Windows XP и более ранних системах для обеспечения аналогичной функции, ранее использовались вирусописателями (я не знаю если это все еще верно для Vista или Windows 7).
+2

Вы также можете использовать команды «ftype» и «assoc» в командной строке (по крайней мере, во всех версиях Windows, которые я пробовал), чтобы выполнить # 1. – brianary

4

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

Я просто попытался создать стандартные окна ассоциации для * .fsx файлов, чтобы открыть их автоматически в fsi.exe и она работает без проблем - при открытии FSx файла, он работает F # Interactive и автоматически оценивает содержимое файла. Это соответствует выполнив команду:

> fsi.exe test.fsx 

Однако, я думаю, что это намного проще, чтобы узнать F # с помощью F # Interactive из Visual Studio. Даже если у вас нет лицензии, вы можете использовать Visual Studio Shell with the free F# plugin. Я думаю, что SharpDevelop также обеспечивает аналогичную интеграцию (но, вероятно, не с некоторыми ограничениями).

Самый простой способ начать - создать новый «F # Script» (Файл -> Создать -> Файл ...), а затем начать писать код (в произвольном порядке). Затем вы можете выбрать часть кода и оценить его в окне F # Interactive, нажав [Alt] + [Enter]. Сначала вам нужно открыть окно F # Interactive, которое можно сделать с помощью [Ctrl] + [Alt] + [F], или вы можете найти его в пункте меню View -> Other Windows.

Я думаю, что большинство веб-трансляций F # используют F # Interactive таким образом, поэтому, если вы посмотрите на некоторые из них, вы должны получить представление о том, как использовать его. Посмотрите, например, на How Do I? видео на www.fsharp.net или F# videos at Channel 9.

+1

Я думаю, что он пытается заменить партию файлы с скриптами F # (что он спрашивал, есть ли способ просто указать файл fsx). Спасибо за ответ. – Amir

1

Here's через прогулка по настройке объединения в окнах 7.