Подтвердить что ты не робот

Можно ли сделать приложение GUI для рабочего стола в ядре .NET?

Я разрабатываю программы WinForms в течение нескольких лет. Сейчас я изучаю .NET Core (включая ASP.NET Core MVC). Я ищу новую настольную технологию GUI. В Visual Studio 2015 обновление 3 я не вижу возможности сделать приложение с графическим интерфейсом в .NET Core. Что мне не хватает?

4b9b3361

Ответ 1

Вы ничего не пропустили. MS не предоставляла разумного способа создания приложений с графическим интерфейсом непосредственно с использованием .Net Core до .Net Core 3, хотя UWP (универсальная платформа Windows) частично построена на основе .Net Core.

.Net Core 3.0 включает поддержку Winforms и WPF, хотя и только для Windows.

Для кроссплатформенных вариантов, которые появились за последние 2 года, см. другие ответы.

Ответ 2

Вы можете использовать Electron и подключить его с помощью Edge. js соответственно. electron-edge. Edge.js позволяет электрону (node.js) вызывать .net dll и наоборот. Таким образом, вы можете написать графический интерфейс с HTML, CSS и JavaScript и бэкэнд с ядром .net. Сам Electron также является перекрестной платформой и основан на браузере хрома.

Ответ 3

Одним из вариантов будет использование Electron с JavaScript, HTML и CSS для пользовательского интерфейса и создание приложения консоли .Net Core, которое будет самостоятельно размещать веб-api для логики внутреннего интерфейса. Electron запустит консольное приложение на фоне, которое выведет сервис на localhost: xxxx.

Таким образом вы можете реализовать всю внутреннюю логику, используя .Net для доступа через HTTP-запросы из JavaScript.

Взгляните на этот пост, он объясняет как создать кросс-платформенное настольное приложение с Electron и .NET Core и код проверки github

Ответ 4

AvaloniaUI теперь поддерживает запуск поверх .NET Core в Win/OSX/Linux. XAML, привязки и шаблоны управления включены.

например разрабатывать на MacOs с Rider:

  1. Следуйте инструкциям, чтобы установить новые шаблоны Avalonia dotnet
  2. Откройте JetBrains Rider и с экрана приветствия,
  3. Выберите New Solution → (В верхней части списка шаблонов) → More Templates → Кнопка Install Template... → перейдите в каталог, в котором вы клонировали шаблоны на шаге 1.
  4. Нажмите кнопку Reload
  5. Вот! Шаблоны Avalonia теперь появляются в списке шаблонов New Solution!
  6. Выберите шаблон Avalonia
  7. Сборка и запуск. Посмотрите на графический интерфейс, открытый перед вашими глазами.

GUI steps to install a dotnet new template into JetBrains Rider

Ответ 5

Теперь можно использовать Qt/QtQuick/QML с .NET Core, используя Qml.Net.

Он высокопроизводительный (не "придирчивый"), полнофункциональный и работает в Linux/OSX/Windows.

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

PS: я автор.

Ответ 6

мы кодировали решение с открытым исходным кодом для электронов с ядром .net: Electron.NET. https://github.com/ElectronNET/Electron.NET

Наслаждайтесь!

Ответ 7

.NET Core 3 будет поддерживать создание приложений для рабочего стола Windows. Я вчера посмотрел демонстрацию технологии на конференции .NET. Это единственное сообщение в блоге, которое я смог найти, но оно иллюстрирует это: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows-desktop-applications/

Ответ 8

Для создания консольного интерфейса вы можете использовать gui.cs. Он с открытым исходным кодом (от Мигеля, создателя Xamarin) и работает на ядре .Net в Windows, Linux & MacOs.

Он имеет следующие компоненты:

  • Кнопки
  • Этикетки
  • Текстовая запись
  • Просмотр текста
  • Поле редактирования времени
  • Радиокнопки
  • Флажки
  • Диалоговые окна
    • Окна сообщений
  • Окна
  • меню
  • ListViews
  • Рамки
  • индикаторы выполненияВиды прокрутки и полосы прокрутки
  • Шестнадцатеричный просмотрщик/редактор (HexView)

Пример скриншота

gui.cs sample output screenshot

Ответ 9

Это старый вопрос, но да, можно разрабатывать кроссплатформенные настольные приложения (GUI) для Windows, Linux и macOS, используя VSCode,.Net Core, С#, gtk3, gtksharp и Glade в качестве GUI Designer.

Вот как.

Ответ 10

tl; dr. Я не уверен, что разработчики .NET Core смогут предоставить инфраструктуру графического интерфейса Cross Platform.

Я чувствую, что ожидаю, что инфраструктура графического интерфейса кросс-платформы будет включена в официальный инструмент (особенно старая версия инструментария - вы упоминаете, что вы используете обновление VS 2015) для ранней версии .NET Core является немного преждевременно.

Графические интерфейсы GUI действительно довольно тяжелые и зависят от аппаратных абстракций, уже присутствующих на главной машине. В Windows обычно используется один оконный менеджер (WM) и среда рабочего стола (DE), используемая большинством пользователей, но для многих различных дистрибутивов Linux, которые поддерживаются, существует любое количество возможных WM и DE, поскольку большинство пользователей будут либо использовать X-Server или Wayland в сочетании с KDE, Gnome или XFCE. Но ни одна установка Linux не будет такой же.

Тот факт, что сообщество с открытым исходным кодом не может реально установить "стандартную" настройку для виртуальной машины и DE, означает, что разработчикам .NET Core было бы довольно сложно создать инфраструктуру графического интерфейса, которая будет работать на всех платформах и комбинации DE и WM.

У многих людей есть несколько замечательных предложений (от использования ASP.NET Core для создания веб-приложения и использования браузера для перечисления множества кросс-платформенных фреймворков). Если вы посмотрите на некоторые из перечисленных графических интерфейсов платформы Cross Platform, вы увидите, насколько они тяжелы.

Однако в конце туннеля есть свет в виде Мигель де Иказа показал, что Xamarin наивно работает на Linux и MacOS в .NET Conf в этом году (2017, если вы читаете это в будущем), поэтому, возможно, стоит попробовать, когда он будет готов.

(но вам нужно перейти с VS 2015 на VS 2017 для доступа к функциям .NET Core 2.0)

Ответ 11

Я работаю над проектом, который может помочь: https://github.com/gkmo/CarloSharp

Следующее приложение написано в .net с пользовательским интерфейсом в HTML/JS/CSS (Angular)

enter image description here

Ответ 12

Вы можете создать веб-приложение с .NET Core и MVC и инкапсулировать его в универсальное приложение JavaScript для Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows p >

Это все еще веб-приложение, но это очень легкий способ превратить веб-приложение в настольное приложение без изучения новой структуры и/или переработать интерфейс, и он отлично работает.

Неудобство в отличие от electron или ReactXP, например, результатом является универсальное приложение Windows, а не приложение для кросс-платформенных настольных систем.

Ответ 13

Necromancing.
Для особого случая существующих приложений WinForms:

Есть способ - хотя я не знаю, насколько хорошо он работает.
Это выглядит так:
Возьмите реализацию WinForms из моно.
Портируйте его на .NET Core или NetStandard.

Перекомпилируйте ваши приложения WinForms с новыми System.Windows.Forms.
Исправьте все, что может быть сломано NetCore.
Молитесь, чтобы моно реализовало детали, которые вам нужны безупречно.
(если это не так, вы всегда можете прекратить молиться и отправить монопроекту запрос на извлечение с вашим исправлением/патчем/функцией)

Вот мой репозиторий CoreFX WinForms:
https://github.com/ststeiger/System.CoreFX.Forms

Ответ 14

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

.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.

Эта страница предоставляет учебное пособие о том, как его использовать. Он также содержит ссылки на примеры репозиториев кода.