Разработка в Visual Studio с использованием Visual F#
В этой статье содержатся сведения о функциях Visual Studio для разработки на языке F#.
Установка поддержки F#
Для разработки в Visual Studio на языке F# необходимо сначала установить рабочую нагрузку разработки классических приложений .NET, если она еще не установлена. Рабочие нагрузки Visual Studio устанавливаются с помощью Visual Studio Installer, который можно открыть, выбрав в меню Инструменты>Получить инструменты и компоненты.
Компоненты проекта F#
Для языка F# в Visual Studio предусмотрены различные шаблоны проектов и элементов. На следующем рисунке показаны некоторые шаблоны проектов F# для .NET Core и .NET Standard.
На следующем рисунке показано несколько шаблонов элементов F#.
Дополнительные сведения о шаблонах элементов для доступа к данным см. в разделе Поставщики типов F#.
В следующей таблице перечислены функции в свойствах проекта для языка F#.
Параметр проекта | Поддерживается в F# | Примечания. |
---|---|---|
Файлы ресурсов | Да | |
Параметры сборки, отладки и ссылок | Да | |
Настройка для различных версий | Да | |
Значок и манифест | No | Доступны через параметры командной строки компилятора. |
Клиентские службы ASP.NET | No | |
ClickOnce | No | По возможности используйте клиентский проект на другом языке .NET. |
Строгое именование | No | Доступны через параметры командной строки компилятора. |
Публикация сборок и управление версиями | No | |
Анализ кода | No | Средства анализа кода можно запускать вручную или как часть команды после сборки. |
Безопасность (изменение уровней доверия) | No |
конструктор проектов
Конструктор проектов состоит из нескольких страниц свойств проекта, сгруппированных по функциям. Страницы, доступные для проектов F#, большей частью являются подмножеством страниц, доступных для других языков. Они описываются в следующей таблице. Приведенные ссылки относятся к соответствующей странице конструктора проектов C#.
Страница конструктора проектов | Дополнительные ссылки | Description |
---|---|---|
Приложение | Страница "Приложение" в конструкторе проектов | На этой странице можно задавать параметры и свойства на уровне приложения, например, указывать, что создается библиотека или исполняемый файл, для какой версии .NET предназначено приложение, и сведения о том, где хранятся файлы ресурсов, используемые приложением. |
Сборка | Build Page, Project Designer (Страница "Сборка" в конструкторе проектов) | Здесь можно управлять ходом компиляции кода. |
События сборки | Страница "События сборки" в конструкторе проектов | Здесь можно задавать команды, которые должны выполняться до или после компиляции. |
Отладка | Страница "Отладка" в конструкторе проектов | На этой странице можно управлять выполнением приложения во время отладки. В частности, можно указать, какие команды следует использовать, каков начальный каталог приложения, а также какие-либо специальные режимы отладки, которые требуется включить, например машинный код и SQL. |
Пакет (только для .NET SDK) | Н/П | Здесь можно определить метаданные пакета NuGet при публикации в виде пакета NuGet. |
Пути ссылок | Управление ссылками в проекте | Здесь можно указать, где следует искать сборки, от которых зависит код. |
Ресурсы (только для .NET SDK) | Н/П | Здесь можно создавать файл ресурсов по умолчанию и управлять им. |
Параметры, относящиеся к F#
В следующей таблице перечислены параметры, которые относятся к F#.
Страница конструктора проектов | Параметр | Description |
---|---|---|
Сборка | Создание хвостовых вызовов | Выбор этого параметра означает включение использования хвостовых (с префиксом tail) инструкций MSIL. Это позволяет повторное использование кадра стека хвостовыми рекурсивными функциями. Аналог параметра компилятора --tailcalls . |
Сборка | Другие флаги | Позволяет указать дополнительные параметры командной строки компилятора. |
Функции редактора кода и текста
В F# поддерживаются следующие функции редакторов кода и текста Visual Studio.
Функция | Description | Поддерживается в F# |
---|---|---|
Автоматический комментарий | Позволяет добавлять или удалять комментарии к разделам кода. | Да |
Автоматически форматировать | Выполняет переформатирование кода с использованием стандартного отступа и стиля. | No |
Закладки | Позволяет сохранять места в редакторе. | Да |
Изменить отступ | Добавляет или удаляет отступ в выбранных строках. | Да |
Автоматический отступ | Автоматически добавляет или удаляет отступ курсора в соответствии с правилами области видимости F#. | Да |
Поиск и замена текста | Позволяет выполнять поиск в файле, проекте или решении, чтобы при необходимости изменить текст. | Да |
Переход к определению для API .NET | Когда курсор находится на API .NET, отображается код, созданный из метаданных .NET. | No |
Переход к определению для пользовательского API | Когда курсор находится на каком-либо определенном вами объекте программы, перемещает курсор в то место вашего кода, в котором этот объект определен. | Да |
Переход к строке | Позволяет перейти к определенной строке в файле по ее номеру. | Да |
Панели навигации в верхней части файла | Позволяют переходить в определенные места в коде, например к имени функции. | Да |
Направляющие для структуры блоков | Показывает направляющие линии, указывающие области F#, на которые можно навести курсор для предварительного просмотра. | Да |
Структура | Позволяет сворачивать разделы кода для более компактного представления. | Да |
Табифицировать | Преобразует пробелы в знаки табуляции. | Да |
Раскраска типов | Отображает определенные имена типов особым цветом. | Да |
Быстрый поиск. См. быстрый поиск в окне "Поиск и замена". | Позволяет выполнять поиск в файле или проекте. | Да |
Ctrl+щелчок для перехода к определению | Удерживая клавишу Ctrl и щелкнув символ F#, можно перейти к определению. | Да |
Перейти к определению из кратких сведений | Элементы с гиперссылкой внутри всплывающих подсказок, щелчок по которым вызывает переход к определению. | Да |
Перейти ко всем | Позволяет осуществлять глобальную навигацию с нечетким соответствием по всем конструкциям F# путем нажатия Ctrl+T. | Да |
Встроенное переименование | Встроенным образом переименовывает все найденные вхождения символа. | Да |
Найти все ссылки | Находит все вхождения символа в базе кода. | Да |
Исправление кода для упрощения имени | Удаляет ненужные квалификаторы для символов F#. | Да |
Исправление кода для удаления неиспользуемых инструкций open |
Удаляет все ненужные инструкции open в документе. |
Да |
Исправление кода для неиспользуемых значений | Предлагает переименование неиспользуемого идентификатора в символ подчеркивания. | Да |
Общие сведения о редактировании кода в Visual Studio и функциях текстового редактора см. в разделе Написание кода в редакторе.
функции IntelliSense
В следующей таблице перечислены функции IntelliSense, поддерживаемые и неподдерживаемые в F#.
Функция | Description | Поддерживается в F# |
---|---|---|
Автоматическая реализация интерфейсов | Создает заглушки кода для методов интерфейса. | Да |
Фрагменты кода | Внедряет код из библиотеки общих конструкций кода в разделы. | No |
Завершение слов | Сохраняет ввод, завершая слова и имена по мере ввода. | Да |
Автоматическое завершение | Если эта функция включена, выполняется завершение слова по мере ввода путем выбора первого совпадения вместо ожидания, пока пользователь выберет вариант или нажмет клавиши Ctrl+ПРОБЕЛ. | Да |
Предлагать завершение для символов в неоткрытых пространствах имен | При включенном автоматическом завершении при выборе символа, который находится в неоткрытом пространстве имен, предлагается завершить его соответствующей инструкцией open . |
Да |
Создавать элементы кода | Позволяет создавать код заглушки для различных конструкций. | No |
Список участников | При вводе оператора доступа к членам (.) отображаются члены для этого ввода. | Да |
Упорядочивание using/open | Упорядочивает пространства имен, на которые ссылаются инструкции using в C# или директивы open в F#. | No |
Сведения о параметрах | Отображает полезные сведения о параметрах по мере ввода вызова функции. | Да |
Краткие сведения | Отображает полное объявление любого идентификатора в коде. | Да |
Автозавершение скобок | Автоматически завершает синтаксические конструкции F# с фигурными скобками в транзакционном стиле. | Да |
Общие сведения об IntelliSense см. в разделе Использование IntelliSense.
Функции отладки
В следующей таблице приведены функции, доступные при отладке кода F#.
Функция | Description | Поддерживается в F# |
---|---|---|
Видимые - окно | Показывает автоматические или временные переменные. | No |
Точки останова | Позволяет приостанавливать выполнение кода в определенных точках во время отладки. | Да |
Условные точки останова | Включает точки останова, в которых проверяется условие, определяющее, следует ли приостановить выполнение. | Да |
Изменить и продолжить | Позволяет изменение и компиляцию кода во время отладки выполняемой программы без остановки и перезапуска отладчика. | No |
Вычислитель выражений | Вычисляет и выполняет код во время выполнения. | Нет, но можно использовать вычислитель выражений C#, хотя при этом необходимо использовать синтаксис C#. |
Отладка с ведением журнала | Позволяет выполнять шаги с заходом в ранее выполненный код. | Да |
Локальные - окно | Отображает локально определенные значения и переменные. | Да |
Выполнить до курсора | Позволяет выполнять код, пока не будет достигнута строка, в которой находится курсор. | Да |
Выполнять по шагам | Позволяет продолжить выполнение и перейти в какой-либо вызов функции. | Да |
Шаг с обходом | Позволяет продолжить выполнение в текущем кадре стека и обойти какой-либо вызов функции. | Да |
Дополнительные сведения об отладчике Visual Studio см. в статье Отладка в Visual Studio.
Дополнительные средства
В следующей таблице приведены сведения о поддержке F# в средствах Visual Studio.
Средство | Description | Поддерживается в F# |
---|---|---|
Иерархия вызовов | Отображает иерархическую структуру вызовов функций в коде. | No |
Метрики кода | Собирает сведения о коде, такие как количество строк. | No |
Представление классов | Позволяет получить представление кода на основе типов в проекте. | No |
Окно "Список ошибок" | Отображает список ошибок в коде. | Да |
Окно "Интерактивный F#" | Позволяет вводить (или копировать и вставлять) код F# и немедленно запускать его, независимо от сборки проекта. Окно "F# Interactive" является окном REPL. | Да |
Обозреватель объектов | Позволяет просматривать типы в сборке. | Типы языка F# в скомпилированных сборках не отображаются точно так же, как при их создании. Вы можете просматривать скомпилированное представление типов F#, но не можете просмотреть типы, как они появляются из F#. |
Окно выходных данных | Отображает выходные данные сборки. | Да |
Анализ производительности | Предоставляет инструменты для измерения производительности кода. | Да |
Окно Свойства" | Отображает свойства объекта в среде разработки, в котором находится фокус, и позволяет редактировать эти свойства. | Да |
Обозреватель сервера | Предоставляет способы взаимодействия с различными ресурсами сервера. | Да |
Обозреватель решений | Позволяет просматривать проекты и файлы, а также управлять ими. | Да |
Список задач | Позволяет управлять рабочими элементами, связанными с кодом. | No |
Тестовые проекты | Предоставляет компоненты, помогающие тестировать код. | No |
Панель инструментов | Отображает вкладки, содержащие перетаскиваемые объекты, такие как элементы управления и разделы текста или кода. | Да |