Я занимаюсь разработкой программ WinForms несколько лет. Сейчас я изучаю .NET Core (включая ASP.NET Core MVC). Я ищу новую технологию рабочего стола с графическим интерфейсом пользователя. В обновлении 3 для Visual Studio 2015 я не вижу никакой возможности создать приложение с графическим интерфейсом в .NET Core. Что мне не хватает?
110
Ответы:
Вы ничего не упустили. MS не поставляла разумных способов создания приложений с графическим интерфейсом напрямую с использованием .Net Core до .Net Core 3, хотя UWP (универсальная платформа Windows) частично построена на основе .Net Core.
.Net Core 3.0 включает поддержку Winforms и WPF, но только для Windows.
.Net 6 будет включать .Net MAUI, который будет поддерживать настольные и мобильные приложения Windows и macOS, а настольные приложения Linux поддерживаются сообществом (не MS). .Net 5 будет включать предварительную версию .Net MAUI.
Для сторонних кроссплатформенных вариантов см. Другие ответы.
источник
AvaloniaUI теперь поддерживает работу поверх .NET Core в Win / OSX / Linux. XAML, привязки и шаблоны элементов управления включены.
например, для разработки на MacO с помощью Rider:
New Solution
-> (В верхней части списка шаблонов) ->More Templates
-> КнопкаInstall Template...
-> перейдите в каталог который вы клонировали шаблоны на шаге 1.Reload
кнопкуNew Solution
списке шаблонов!источник
Вы можете использовать Electron и подключить его к Edge.js, соответственно. электрон-край . Edge.js позволяет электрону (node.js) вызывать DLL-библиотеки .net и наоборот. Таким образом, вы можете написать графический интерфейс с помощью HTML, CSS и JavaScript, а серверную часть - с помощью ядра .NET. Сам Electron также является кроссплатформенным и основан на браузере Chrome.
источник
Теперь можно использовать Qt / QtQuick / QML с .NET Core, используя Qml.Net .
Он высокопроизводительный (не «болтливый»), полнофункциональный и работает в Linux / OSX / Windows.
Ознакомьтесь с моим сообщением в блоге, чтобы узнать, как он сравнивается с другими вариантами, существующими в настоящее время.
PS: я автор.
источник
Один из вариантов - использовать Electron с JavaScript, HTML и CSS для пользовательского интерфейса и создать консольное приложение .Net Core, которое будет самостоятельно размещать веб-API для внутренней логики. Electron запустит консольное приложение в фоновом режиме, которое откроет службу на localhost: xxxx.
Таким образом, вы можете реализовать всю внутреннюю логику, используя .Net, чтобы она была доступна через HTTP-запросы из JavaScript.
Взгляните на этот пост, в нем объясняется, как создать кроссплатформенное настольное приложение с Electron и .Net Core, и проверить код на github.
источник
Для создания консольного пользовательского интерфейса вы можете использовать gui.cs . Он имеет открытый исходный код (от Мигеля, создателя Xamarin) и работает на ядре .Net в Windows, Linux и MacOs.
Он состоит из следующих компонентов:
Образец снимка экрана
источник
мы написали решение с открытым исходным кодом для электронов с ядром .net: Electron.NET . https://github.com/ElectronNET/Electron.NET
Наслаждайтесь!
источник
.NET Core 3 будет поддерживать создание настольных приложений Windows. Вчера во время конференции .NET я смотрел демонстрацию технологии. Это единственное сообщение в блоге, которое я смог найти, но оно иллюстрирует суть: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- настольные приложения /
источник
tl; dr - Я не уверен, что разработчики .NET Core могли бы предоставить кроссплатформенную структуру графического интерфейса.
Мне кажется, что ожидать, что кроссплатформенная структура графического интерфейса будет включена в официальный инструментарий (особенно в старую версию инструментария - вы упомянули, что вы используете VS 2015 update 3) для ранней версии .NET Core, немного преждевременно.
Фреймворки GUI действительно довольно тяжелые и зависят от аппаратных абстракций, уже имеющихся на хост-машине. В Windows обычно используется менеджер одного окна (WM) и среда рабочего стола (DE), но во многих поддерживаемых дистрибутивах Linux существует любое количество возможных WM и DE - при условии, что большинство пользователей либо использовать X-Server или Wayland в сочетании с KDE, Gnome или XFCE. Но ни одна установка Linux не будет такой же.
Тот факт, что сообщество разработчиков ПО с открытым исходным кодом не может согласиться на «стандартную» настройку виртуальной машины и DE, означает, что разработчикам .NET Core будет довольно сложно создать среду графического интерфейса, которая будет работать на всех платформах и комбинациях DE и WM.
У многих здесь есть отличные предложения (от использования ASP.NET Core до создания веб-приложения и использования браузера до перечисления нескольких кроссплатформенных фреймворков). Если вы посмотрите на некоторые из упомянутых кросс-платформенных графических интерфейсов, перечисленных, вы увидите, насколько они тяжелы.
Однако в конце туннеля есть свет, поскольку Мигель де Иказа продемонстрировал наивную работу Xamarin на Linux и MacOS на конференции .NET Conf в этом году (2017, если вы читаете это в будущем), так что, возможно, стоит попробовать когда он будет готов.
(но вам необходимо обновить VS 2015 до VS 2017, чтобы получить доступ к функциям .NET Core 2.0)
источник
Я работаю над проектом, который может помочь: https://github.com/gkmo/CarloSharp
Следующее приложение написано в .net с пользовательским интерфейсом в HTML / JS / CSS (Angular)
источник
Вы можете разработать веб-приложение с .NET Core и MVC и инкапсулировать его в универсальное приложение JavaScript для Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
Это по-прежнему веб-приложение, но это очень легкий способ превратить веб-приложение в настольное приложение без изучения новой структуры или / и переделки пользовательского интерфейса, и он отлично работает.
Это неудобство, в отличие от, например, Electron или ReactXP , результатом является универсальное приложение для Windows, а не кроссплатформенное настольное приложение.
источник
Да, это возможно.
.NET Core не имеет готовых компонентов для встроенного графического интерфейса. Однако для него есть пакет NuGet, который называется Electron.NET , согласно ответу Грегора Бисвангера.
Electron - это фреймворк, который позволяет создавать собственные приложения с графическим интерфейсом поверх Node.js. Electron.NET - это пакет NuGet, который позволяет использовать Electron и Node.js из кода .NET Core.
Хорошая новость заключается в том, что вам не нужно изучать JavaScript, Electron или Node.js, чтобы использовать пакет NuGet. Файлы JS запускаются внутри вашего приложения, но они автоматически создаются в процессе сборки.
Все, что вам нужно сделать, это создать довольно стандартное приложение ASP.NET Core MVC. Единственное отличие состоит в том, что он работает не в браузере, а как собственное оконное приложение. Помимо всего лишь нескольких строк кода, специфичного для пакета Electron.NET, вам не нужно будет изучать что-либо выше ASP.NET Core MVC.
На этой странице представлено руководство по его использованию. Он также содержит ссылки на репозитории примеров кода.
источник
Некромантинг.
Для особого случая существующих приложений WinForms :
способ есть - хотя я не знаю, насколько хорошо он работает.
Это выглядит так:
возьмите реализацию WinForms из моно.
Перенесите его на .NET Core или NetStandard.
Перекомпилируйте свои приложения WinForms в соответствии с новым System.Windows.Forms.
Исправьте все, что может быть сломано NetCore.
Молитесь, чтобы mono безупречно использовал нужные вам детали.
(если этого не произойдет, вы всегда можете перестать молиться и отправить монопроекту пул-реквест с вашим исправлением / патчем / функцией)
Вот мой репозиторий CoreFX WinForms:
https://github.com/ststeiger/System.CoreFX.Forms
источник
Это старый вопрос, но да, можно разрабатывать кроссплатформенные настольные (GUI) приложения для Windows, Linux и macOS, используя VSCode, .Net Core, C #, gtk3, gtksharp и Glade в качестве GUI Designer.
Вот как .
источник
Если вы используете
.Net Core 3.0
и выше, выполните следующие шаги, и все готово: (Я собираюсь использовать .NET Core CLI , но вы также можете использовать Visual Studio)md MyWinFormsApp
необязательный шагcd MyWinFormsApp
необязательный шагdotnet new sln -n MyWinFormsApp
необязательный шаг, но это хорошая идеяdotnet new winforms -n MyWinFormsApp
Извините, это не обязательноdotnet sln add MyWinFormsApp
сделайте это, если вы сделали шаг №3Хорошо, можешь перестать читать мой ответ и начать добавлять код в
MyWinFormsApp
проект. но если вы хотите работать с Form Designer, продолжайте читать.MyWinFormsApp.csproj
файл и измените его<TargetFramework>netcoreapp3.1<TargetFramework>
на<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(если вы используетеnetcoreapp3.0
, не волнуйтесь, измените его на<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
После выполнения этих шагов у вас должно получиться следующее:
Program.cs
и добавьте следующее препроцессор - если#if NETCOREAPP3_1 Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif
Теперь вы можете открыть
MyWinFormsApp
проект с помощью Visual Studio 2019 ( я думаю, вы тоже можете использовать Visual Studio 2017, но я не уверен ) и дважды щелкните по нему,Form1.cs
и вы должны увидеть это:Хорошо, откройте Toolbox (
Ctrl+W,X
) и начните добавлять элементы управления в свое приложение и сделать его красивым.Вы можете узнать больше о конструкторе в Windows Forms .NET Core Designer.
источник
WinForms (и его визуальный конструктор) доступны для .NET Core (в качестве предварительной версии), начиная с Visual Studio 2019 16.6. Это неплохо, хотя иногда мне нужно открыть Visual Studio 2019 16.7 Preview, чтобы обойти досадные ошибки.
См. Это сообщение в блоге: https://devblogs.microsoft.com/dotnet/windows-forms-designer-for-net-core-released/
Кроме того, WinForms теперь имеет открытый исходный код: https://github.com/dotnet/winforms
источник