F # VS2019 Windows Формы - PullRequest
       90

F # VS2019 Windows Формы

1 голос
/ 20 марта 2020

Я изучаю F # и просто пытаюсь создать программу Animate для маятника. Вот код: https://rosettacode.org/wiki/Animate_a_pendulum#F .23

Насколько я понимаю, VS 2019 не поддерживает WinForms в F # (возможно, я ошибаюсь), поэтому у меня есть сообщения об ошибках , пытаясь скопировать / вставить этот код:

enter image description here

Что мне делать?
Спасибо большое!

Ответы [ 2 ]

2 голосов
/ 21 марта 2020

Если вы хотите использовать Winforms на ядре. NET, вам необходимо сделать следующее в вашем проекте:

  1. Открыть файл проекта (дважды щелкните узел в Visual Studio)
  2. Измените Sdk на Microsoft.NET.Sdk.WindowsDesktop
  3. Убедитесь, что у вас есть OutputType: <OutputType>WinExe</OutputType>
  4. Добавьте следующее свойство в верхний уровень PropertyGroup: <UseWindowsForms>true</UseWindowsForms>

Визуальный дизайнер не будет использоваться, но у вас должен быть доступ к API.

0 голосов
/ 21 марта 2020

К сожалению, в Visual Studio 2019 нет дизайнера Winforms для проектов F # любого типа, а Winforms легко доступны (насколько я знаю) только в . Net Framework ( NOT. NET Core ) проекты к ним можно получить доступ согласно ответу @Phillip Carter.

Однако вы все равно можете легко создавать программы Winforms, вручную добавление ссылок в ваш проект. NET Framework или (более просто) путем ручной компиляции с помощью компилятора F #, fsc.

  • Быстрое Способ

Самый простой способ сделать это - просто скомпилировать исходный код с помощью компилятора F # из одного исходного файла с fsc.exe. Компилятор F # автоматически разрешает зависимости для таких вещей, как System.Windows.Forms и многих других часто используемых пространств имен. Вы также можете предоставить множество директив компилятора для других ресурсов.

Пример использования VSCode с различными расширениями: VSCode example


  • Другой путь

Запустите новую консоль F #. NET Проект Framework (не выбирайте. NET Core). New Project

Щелкните правой кнопкой мыши «Ссылки» в обозревателе решений и выберите «Добавить ссылку ...» References

Под сборки, найдите «System. Windows .Forms», выберите его ... Select System.Windows.Forms

А также выберите «System.Drawing» и затем нажмите OK System.Drawing

Теперь у вас есть доступ к обоим этим пространствам имен.

Перед запуском проекта в Visual Studio необходимо заменить

[<STAThread>]
Application.Run( new PendulumForm( Visible=true ) )

на

[<STAThread;EntryPoint>]
let main _ = 
    Application.Run( new PendulumForm( Visible=true ) )
    0

Таким образом, вы (и VS) знаете, где на самом деле находится main. Это не обязательно для этой маленькой программы, чтобы на самом деле запустить ее, но по мере того, как ваши проекты становятся больше, VS будет больше жаловаться на расположение вещей в вашем проекте.

...