Могу ли я запускать файлы fsx из Visual Studio без создания проекта?

Я хочу использовать F # для некоторых очень простых задач, для которых я ранее использовал пакетные файлы. Я могу связать файлы fsx с файлом fsi.exe и запустить его, дважды щелкнув по ним. До сих пор это здорово.

Однако иногда мне захочется погрузиться в код глубже и отлаживать вещи. Когда я открываю файл fsx в Visual Studio, я не могу его запустить, но я также не могу выбрать строки и использовать "Отправить в интерактивный".

Мне кажется, что эти команды работают только в том случае, если вы создали полный проект F #. Это кажется громоздким (как замена пакетного файла). Интересно, какой из них правильный? Я хочу получить торт и съесть его! Я хочу простой файл, который я могу изменить быстро, но я также хочу, чтобы возможность анализировать вещи с помощью Visual Studio по требованию.

UPDATE Я просто понял, что вы можете открыть интерактивную консоль в "View\Other Windows\F # Interactive", после чего у вас есть команда "Отправить в интерактивную".

Мне все еще не хватает возможности запускать код и устанавливать точки останова, хотя..

Ответ 1

Как вы уже выяснили, вам не нужно создавать проект для использования консоли F # Interactive.

Я считаю, что такие функции, как отладка, намного менее важны, когда вы используете F # для интерактивной разработки (или создания сценариев), потому что вы можете легко оценить код поэтапно, чтобы проанализировать его поведение, просто отправив отдельные команды в FSI. Поэтому я не очень часто чувствую необходимость отладки в F # Interactive.

Хотя эта функция не поддерживается, вы можете отлаживать код в файле script при использовании только F # Interactive. Хитрость заключается в том, чтобы приложить отладчик к процессу fsi.exe, который работает за F # Interactive.

Просто перейдите в "Debug" → "Attach to Process", а затем выберите "fsi.exe". Затем вы можете разместить brakepoints в файле fsx script, а код, запущенный в F # Interactive, будет разбит. Как я уже сказал, это не поддерживается, но, как правило, хорошо работает для кода в функциях. Я не часто нахожу это полезным, но иногда это может быть полезно.