क्या .NET GUI में डेस्कटॉप GUI एप्लिकेशन बनाना संभव है?


103

मैं कुछ वर्षों के लिए WinForms कार्यक्रम विकसित कर रहा हूं। मैं अब .NET कोर (ASP.NET कोर MVC सहित) में देख रहा हूँ। मैं नई GUI डेस्कटॉप तकनीक की खोज कर रहा हूं। Visual Studio 2015 अद्यतन 3 में मैं .NET कोर में GUI ऐप बनाने के लिए कोई विकल्प नहीं देख सकता। मैं क्या खो रहा हूँ?


आपको इस नए प्लेटफ़ॉर्म को देखकर कोण बदलना चाहिए। प्रत्येक मौजूदा चौखटे, WPF / WinForms / UWP / GTK # / Xamarin.Mac / iOS / Android आपके द्वारा .NET कोर पर लिखे गए कोड का उपयोग कर सकते हैं। यह क्रॉस प्लेटफ़ॉर्म विकास को सक्षम करता है, बस उस तरीके से नहीं जैसा आप कल्पना करते हैं।
लेक्स ली

तो आप कह रहे हैं कि मैं GUIs का निर्माण कर सकता हूं, उदाहरण के
लिए-

नहीं। .NET कोर पर निर्मित पैकेज को सीधे संदर्भ के रूप में जोड़ा जा सकता है।
लेक्स ली

1
इलेक्ट्रॉन जाने का रास्ता है। एक एपीआई के पीछे asp.net का उपयोग करें। यदि आप यूआई लॉजिक को हल्का रखते हैं, तो आपको आवेदन का सबसे महत्वपूर्ण हिस्सा .net पर रखने में सक्षम होना चाहिए
user7558114

1
एक प्रो टिप के रूप में, मैं विज़ुअल स्टूडियो 2017 (यदि संभव हो) में अपग्रेड कर सकता हूं या उपलब्ध अन्य उपकरणों (सीएलआई और / या वीएस कोड / राइडर) का उपयोग करेगा क्योंकि वीएस 2015 में .NET कोर 2.0 टूलिंग तक पहुंच नहीं है, जो होगा अपने विकास को आगे बढ़ाने में बाधा। यहां तक ​​कि अगर तुम सब कर रहे हैं इसके साथ प्रयोग कर रहा है।
जेमी टेलर

जवाबों:


66

आप कुछ भी याद नहीं कर रहे थे। MS ने .Net Core .Net Core 3 का उपयोग करके सीधे GUI एप्लिकेशन बनाने के लिए कोई उचित तरीका नहीं भेजा है, हालाँकि UWP (Universal Windows Platform) आंशिक रूप से .Net Core के शीर्ष पर बनाया गया है।

.Net Core 3.0 में Winforms और WPF के लिए समर्थन शामिल है, हालांकि यह केवल Windows है।

.Net 6 में .Net MAUI शामिल होगा, जो समुदाय द्वारा समर्थित लिनक्स डेस्कटॉप अनुप्रयोगों के साथ विंडोज और मैकओएस डेस्कटॉप एप्लिकेशन और मोबाइल एप्लिकेशन का समर्थन करेगा (एमएस नहीं)। .Net 5 में .Net MAUI का पूर्वावलोकन संस्करण शामिल होगा।

3 पार्टी क्रॉस प्लेटफॉर्म विकल्पों के लिए, अन्य उत्तर देखें।


42
omg, यह एक झटका है! तो एक क्रॉस प्लेटफ़ॉर्म फ्रेमवर्क का क्या मतलब है जिसमें कोई GUI नहीं है?
इकाडिल्ली

19
@EssamGndelee प्राथमिक बिंदु ASP.NET कोर अनुप्रयोग हैं। एक द्वितीयक बिंदु कंसोल एप्लिकेशन हैं।
svick

3
@ChristopherPainter क्लाउड कंप्यूटिंग के लिए बेहतर समर्थन और Node.js जैसे प्लेटफार्मों से डेवलपर्स को आकर्षित करने के कुछ कारण हैं। नेट कोर मौजूद है, हाँ। लेकिन इसका मतलब यह नहीं है कि Microsoft केवल उन लोगों की परवाह करता है।
svick

1
@ मुझे लगता है कि Microsoft का रुख यह है कि आपको इसके लिए UWP का उपयोग करना चाहिए।
svick

1
@svick, जो किसी भी क्रॉस-प्लेटफ़ॉर्म प्रोग्रामिंग को पूरी तरह से समाप्त कर देगा, जिसे .NET कोर को हल करना चाहिए था। UWP केवल MS परिवार के लिए काफी अच्छा है: /
Walther

43

AvaloniaUI के पास अब Win / OSX / Linux पर .NET Core के शीर्ष पर चलने के लिए समर्थन है। XAML, बाइंडिंग और कंट्रोल टेम्प्लेट शामिल हैं।

राइडर के साथ मैकओ पर विकसित करना:

  1. एवलोनिया डॉटनेट नए टेम्प्लेट स्थापित करने के लिए निर्देशों का पालन करें
  2. ओपन JetBrains राइडर और वेलकम स्क्रीन से,
  3. चुनें New Solution-> (टेम्पलेट सूची के शीर्ष के पास) -> More Templates-> बटन Install Template...-> उस निर्देशिका में ब्राउज़ करें जहां आपने चरण 1 पर टेम्पलेट्स को क्लोन किया था।
  4. Reloadबटन पर क्लिक करें
  5. देखो! Avalonia Templates अब New SolutionTemplates List में दिखाई देते हैं !
  6. एक हिमस्खलन टेम्पलेट चुनें
  7. बनाएँ और चलाएँ। अपनी आंखों के सामने जीयूआई खोलें।

GUI ने JetBrains राइडर में एक डॉटनेट नया टेम्पलेट स्थापित करने के लिए कदम उठाए


एक तरफ के रूप में, रुचि रखने वाले किसी भी व्यक्ति को राइडर में एवलोनिया
xendi

41

आप इलेक्ट्रॉन का उपयोग कर सकते हैं और इसे Edge.js सम्मान के साथ तार कर सकते हैं । इलेक्ट्रॉन-धार । Edge.js इलेक्ट्रॉन को .net dll और इसके विपरीत कॉल करने की अनुमति देता है। इस तरह आप HTML, CSS और JavaScript के साथ GUI और .net कोर के साथ बैकएंड लिख सकते हैं। इलेक्ट्रॉन स्वयं भी क्रॉस प्लेटफॉर्म है और क्रोमियम ब्राउज़र पर आधारित है।


5
लेकिन इलेक्ट्रॉन क्यों? आप पोर्ट X पर एक वेब-एप्लिकेशन भी खोल सकते हैं और फिर ब्राउज़र को वहां नेविगेट कर सकते हैं। इसमें सब कुछ शामिल हो सकता है इलेक्ट्रॉन, और अधिक क्योंकि यह हमेशा ब्राउज़र का नवीनतम संस्करण है - इलेक्ट्रॉन के विपरीत। यदि आपको एक विशिष्ट ब्राउज़र संस्करण की आवश्यकता है, तो अपने वितरण में Google-Chrome शामिल करें।
स्टीफन स्टीगर

1
@StefanSteiger मुझे लगता है कि इलेक्ट्रॉन का उपयोग करना और असेंबली के माध्यम से सीधे एपीआई को कॉल करना भी इस अंतर को भर देगा कि उपयोगकर्ता ऐप को वेब ऐप के रूप में नहीं देखेगा। और कुछ devs HTTP का उपयोग करके अधिक संचार परत नहीं जोड़ना चाहते हैं।
ब्रायन एनजी

इलेक्ट्रॉन.नेट ऐसा लगता है कि यह बहुत सरल है अब cross-platform-blog.com/electron.net/…
जे। एलन

इलेक्ट्रॉन.नेट आशाजनक लगता है, लेकिन मैं इसे उत्पादन में उपयोग करने से थका रहूंगा क्योंकि यह आपको अपनी उत्पादन मशीन पर एक गैर-सुरक्षित वेब सर्वर खोलने के लिए मजबूर करता है। तब तक, जब तक कि ऐप के ASP.NET कोर अंत को ठीक से कॉन्फ़िगर किए गए रिवर्स प्रॉक्सी सर्वर जैसे IIS या nginx (या समान) के पीछे बैठा दिया जाता है, तब आपको सुरक्षित होना चाहिए।
जेमी टेलर

नरक सिर्फ एक mvc / webapi के रूप में ऐप को होस्ट कर सकता है, स्थानीय रूप से यादृच्छिक पोर्ट पर होस्ट कर सकता है, और स्थानीय एपीआई को कॉल करने वाले इलेक्ट्रॉन इंटरफ़ेस का उपयोग कर सकता है।
Wjdavis5

30

Qml.Net का उपयोग करके .NET कोर के साथ Qt / QtQuick / QML का उपयोग करना अब संभव है ।

यह अत्यधिक प्रदर्शन करने वाला है ("पिनवॉक चेट्टी नहीं"), पूरी तरह से चित्रित और लिनक्स / ओएसएक्स / विंडोज पर काम करता है।

की जाँच करें मेरी ब्लॉग पोस्ट को देखने के लिए कि यह कैसे वर्तमान में बाहर अन्य विकल्प है।

पुनश्च: मैं लेखक हूँ।


यह बहुत आशाजनक लग रहा है, मैं इसे देख रहा हूँ
डैनियल

22

एक विकल्प यूआई के लिए जावास्क्रिप्ट, एचटीएमएल और सीएसएस के साथ इलेक्ट्रॉन का उपयोग किया जाएगा और एक। नेट कोर कंसोल एप्लिकेशन का निर्माण होगा जो बैक-एंड लॉजिक के लिए एक वेब एपीआई को स्वयं-होस्ट करेगा। इलेक्ट्रॉन पृष्ठभूमि पर कंसोल एप्लिकेशन शुरू करेगा जो स्थानीयहोस्ट पर एक सेवा को उजागर करेगा: xxxx।

इस तरह आप जावास्क्रिप्ट से HTTP अनुरोधों के माध्यम से सुलभ होने के लिए .Net का उपयोग करके सभी बैक-एंड लॉजिक को लागू कर सकते हैं।

इस पोस्ट पर एक नज़र डालें, यह बताता है कि इलेक्ट्रॉन और .Net कोर के साथ एक क्रॉस-प्लेटफ़ॉर्म डेस्कटॉप एप्लिकेशन कैसे बनाया जाए और जीथब पर चेक कोड।


17

कंसोल-आधारित UI बनाने के लिए, आप gui.cs का उपयोग कर सकते हैं । यह ओपन-सोर्स (मिगेल, ज़ामरीन के निर्माता से) है, और विंडोज, लिनक्स और मैक पर नेट कोर पर चलता है।

इसके निम्नलिखित घटक हैं:

  • बटन
  • लेबल
  • पाठ प्रविष्टि
  • व्याख्यान दर्शन
  • समय संपादन क्षेत्र
  • रेडियो के बटन
  • चेक बॉक्स
  • डायलॉग बॉक्स
    • संदेश बॉक्स
  • खिड़कियाँ
  • मेनू
  • listviews
  • फ्रेम्स
  • प्रगति पट्टी
  • स्क्रॉल दृश्य और स्क्रॉलबार
  • Hexadecimal दर्शक / संपादक (HexView)

नमूना स्क्रीनशॉट

gui.cs नमूना आउटपुट स्क्रीनशॉट


16

हमने .net कोर के साथ इलेक्ट्रॉन के लिए एक खुला स्रोत समाधान कोडित किया है: इलेक्ट्रॉन ।नेट । https://github.com/ElectronNET/Electron.NET

का आनंद लें!


15
क्या ब्लिप है। अगर मुझे एक HTML पेज चाहिए तो मैं एक HTML पेज बनाऊंगा। मुझे ऐसा कुछ चाहिए जो डेस्कटॉप के साथ इंटरैक्ट करता है।
जोशुआ

6

.NET Core 3 में विंडोज डेस्कटॉप एप्लिकेशन बनाने के लिए समर्थन होगा। मैंने .NET सम्मेलन के दौरान कल प्रौद्योगिकी का डेमो देखा। यह एकमात्र ऐसा ब्लॉग पोस्ट है जो मुझे मिल सकता है, लेकिन इस बिंदु को स्पष्ट करता है: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- डेस्कटॉप अनुप्रयोगों /


4

tl; dr - मुझे यकीन नहीं है कि यह .NET कोर देवों के लिए क्रॉस प्लेटफॉर्म GUI फ्रेमवर्क की आपूर्ति करने के लिए संभव होगा।

मुझे लगता है कि आधिकारिक टूलिंग (विशेष रूप से टूलिंग का एक पुराना संस्करण) में बंडल क्रॉस जीयूआई फ्रेमवर्क की उम्मीद है। आप उल्लेख करते हैं कि आप .NET कोर के शुरुआती संस्करण के लिए वीएस 2015 अपडेट 3 चला रहे हैं) थोड़ा समय से पहले है।

GUI चौखटे वास्तव में काफी भारी हैं, और मेजबान मशीन पर पहले से मौजूद हार्डवेयर अमूर्त पर निर्भर हैं। विंडोज पर आम तौर पर ज्यादातर उपयोगकर्ताओं द्वारा उपयोग किया जाने वाला एक एकल विंडो मैनेजर (WM) और डेस्कटॉप वातावरण (DE) है, लेकिन लिनक्स के कई अलग-अलग वितरणों पर जो समर्थित हैं, WM और DEs के किसी भी संख्या में उपलब्ध हैं - अधिकांश उपयोगकर्ता या तो दिए गए हैं KDE, Gnome या XFCE के साथ संयोजन में X-Server या Wayland का उपयोग करें। लेकिन कभी भी लिनक्स की स्थापना समान नहीं है।

तथ्य यह है कि खुले स्रोत समुदाय वास्तव में VM और DE के लिए "मानक" सेटअप पर व्यवस्थित नहीं हो सकते हैं, इसका मतलब है कि .NET कोर देवों के लिए GUI फ्रेमवर्क बनाना बहुत कठिन होगा जो सभी प्लेटफार्मों और संयोजनों में काम करेगा DEs और WMs।

यहां बहुत सारे लोगों के पास कुछ बेहतरीन सुझाव हैं (वेब ​​एप्लिकेशन बनाने के लिए ASP.NET Core का उपयोग करें और क्रॉस प्लेटफॉर्म फ्रेमवर्क का एक गुच्छा सूचीबद्ध करने के लिए ब्राउज़र का उपयोग करें)। यदि आप सूचीबद्ध क्रॉस प्लेटफॉर्म GUI फ्रेमवर्क में से कुछ पर एक नज़र डालते हैं, तो आप देखेंगे कि वे कितने भारी हैं।

हालांकि, सुरंग के अंत में प्रकाश है क्योंकि मिगुएल डे इकाजा ने एक्समैरिन को लिनक्स पर और मैकओएस पर नेट पर चल रहा दिखाया। इस साल (2017, यदि आप भविष्य में इसे पढ़ रहे हैं), तो यह कोशिश करने लायक हो सकता है। कि जब यह तैयार है।

(लेकिन आपको .NET कोर 2.0 सुविधाओं तक पहुंचने के लिए VS 2015 से VS 2017 तक अपग्रेड करना होगा)


लिनक्स विविधता के लिए कोई तर्क नहीं। 1. जावा सुचारू रूप से चलता है 2. मोनो रन विनफॉर्म (नॉरमली) (तू बदसूरत)। लिनक्स में आप क्यूटी आधारित डिस्ट्रो और इसके विपरीत जीटीके का उपयोग कर सकते हैं। यह .net कोर के लिए क्यूटी बाइंडिंग के लिए अच्छा है।
बोगदान मार्ट

मैं आपकी हर बात से सहमत हूं। हालाँकि, मुझे लगता है कि Microsoft का दृष्टिकोण फिलहाल IAS (एक सेवा के रूप में अवसंरचना), SaaS (एक सेवा के रूप में सॉफ़्टवेयर) और PaaS (एक सेवा के रूप में प्लेटफ़ॉर्म) सेवा प्रदान करना है। यह समझ में आता है कि उनकी पहली पार्टी, ओपन सोर्स, क्रॉस प्लेटफॉर्म फ्रेमवर्क डेवलपर्स को प्राथमिकता के रूप में उस दिशा में इंगित करेगा। एज़्योर और आरएचईएल और गूगल जैसी अन्य कंपनियां एएसपी नेट कोर और .NET कोर दोनों का समर्थन करने के लिए काम कर रही हैं, और यह व्यावहारिक रूप से पौराणिक है, और यह समझ में आता है कि .NET कोर के लिए प्राथमिकता यह दर्शाती है।
जेमी टेलर


3

आप .NET कोर और MVC के साथ एक वेब एप्लिकेशन विकसित कर सकते हैं और इसे एक विंडोज यूनिवर्सल जावास्क्रिप्ट ऐप में इनकैप्सुलेट कर सकते हैं: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows

यह अभी भी एक वेब ऐप है, लेकिन यह एक बहुत ही हल्का तरीका है एक वेब ऐप को एक नए फ्रेमवर्क को सीखे बिना / या यूआई को पुनर्विकास किए बिना डेस्कटॉप ऐप में बदलने का, और यह बहुत अच्छा काम करता है।

असुविधा इलेक्ट्रॉन या रिएक्टएक्सपी के विपरीत है उदाहरण के लिए, परिणाम एक सार्वभौमिक विंडोज ऐप है न कि क्रॉस प्लेटफॉर्म डेस्कटॉप ऐप।


2

हाँ यह संभव है।

.NET कोर के पास मूल GUI एप्लिकेशन के लिए कोई घटक नहीं है। हालाँकि, इसके लिए एक NuGet पैकेज है जिसे Greg.NET Biswanger के उत्तर के अनुसार, इलेक्ट्रॉन .नेट कहा जाता है ।

इलेक्ट्रॉन एक ढांचा है जो आपको Node.js. के शीर्ष पर देशी GUI अनुप्रयोगों के निर्माण की अनुमति देता है इलेक्ट्रॉन.नेट एक न्यूगेट पैकेज है जो आपको अपने .NET कोर कोड के भीतर से इलेक्ट्रॉन और Node.js का उपयोग करने की अनुमति देता है।

अच्छी खबर यह है कि आपको NuGet पैकेज का उपयोग करने में सक्षम होने के लिए जावास्क्रिप्ट, इलेक्ट्रॉन या Node.js सीखने की आवश्यकता नहीं है। जेएस फाइलें आपके आवेदन के अंदर चलती हैं, लेकिन वे निर्माण प्रक्रिया द्वारा स्वचालित रूप से उत्पन्न होती हैं।

आप सभी एक सुंदर मानक ASP.NET Core MVC ऐप बना रहे हैं। अंतर केवल इतना है कि, ब्राउज़र में चलने के बजाय, यह एक देशी विंडो ऐप के रूप में चलता है। इलेक्ट्रॉननेट पैकेज के लिए कोड की कुछ पंक्तियों के अलावा, आपको ASP.NET Core MVC से ऊपर कुछ भी सीखने की आवश्यकता नहीं होगी।

यह पृष्ठ इसका उपयोग करने के तरीके के बारे में एक ट्यूटोरियल प्रदान करता है। इसमें सैंपल कोड रिपॉजिटरी के कुछ लिंक भी हैं।


2

Necromancing। मौजूदा WinForms अनुप्रयोगों
के विशेष मामले के लिए : एक तरीका है - हालांकि मुझे नहीं पता कि यह कितना अच्छा काम करता है। यह इस तरह से होता है: मोनो से WinForms कार्यान्वयन को लें। इसे .NET कोर या NetStandard में पोर्ट करें।




नए System.Windows.Forms के खिलाफ अपने WinForms अनुप्रयोगों को पुनः साझा करें।
कुछ भी ठीक करें जिसे नेटकोर द्वारा तोड़ा जा सकता है।
प्रार्थना करें कि मोनो उन भागों को लागू करता है जिनकी आपको आवश्यकता है।
(यदि ऐसा नहीं होता है, तो आप हमेशा प्रार्थना करना बंद कर सकते हैं, और मोनो-प्रोजेक्ट को अपने फिक्स / पैच / फीचर के साथ पुल अनुरोध भेज सकते हैं)

यहाँ मेरा CoreFX WinForms repo:
https://github.com/ststeiger/System.CoreFX.Forms है


1

यह एक पुराना सवाल है, लेकिन हाँ, विंडोज, लिनक्स और मैकओएस के लिए, VSCode, .Net कोर, C #, gtk3, gtksharp और Glade को GUID डिज़ाइनर के रूप में उपयोग करके क्रॉस-प्लेटफ़ॉर्म डेस्कटॉप (GUI) एप्लिकेशन विकसित करना संभव है।

यहाँ है कैसे


0

यदि आप .Net Core 3.0चरणों का उपयोग करते हैं और ऊपर करते हैं और आप जाने के लिए अच्छे हैं: (मैं .NET कोर सीएलआई का उपयोग करने जा रहा हूं , लेकिन आप पीडीएफ स्टूडियो का उपयोग कर सकते हैं)

  1. md MyWinFormsApp वैकल्पिक कदम
  2. cd MyWinFormsApp वैकल्पिक कदम
  3. dotnet new sln -n MyWinFormsApp वैकल्पिक कदम है, लेकिन यह अच्छा विचार है
  4. dotnet new winforms -n MyWinFormsApp मुझे खेद है, यह वैकल्पिक नहीं है
  5. dotnet sln add MyWinFormsApp यदि आपने चरण # 3 किया है तो ऐसा करें

ठीक है, आप मेरे उत्तर को पढ़ना बंद कर सकते हैं और MyWinFormsAppपरियोजना में कोड जोड़ना शुरू कर सकते हैं । लेकिन अगर आप फॉर्म डिजाइनर के साथ काम करना चाहते हैं तो पढ़ते रहें।

  1. खोलें MyWinFormsApp.csprojफ़ाइल और परिवर्तन <TargetFramework>netcoreapp3.1<TargetFramework>करने के लिए <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>(यदि आप का उपयोग कर netcoreapp3.0चिंता मत करो, यह करने के लिए बदल <TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>)
  2. फिर निम्नलिखित जोड़ें ItemGroup
  <ItemGroup Condition="'$(TargetFramework)' == 'net472'">
    <Compile Update="Form1.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="Form1.Designer.cs">
      <DependentUpon>Form1.cs</DependentUpon>
    </Compile>
  </ItemGroup>

इन चरणों को करने के बाद आपको यही करना चाहिए:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'net472'">
    <Compile Update="Form1.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="Form1.Designer.cs">
      <DependentUpon>Form1.cs</DependentUpon>
    </Compile>
  </ItemGroup>

</Project>
  1. प्रीप्रोसेसर को खोलें Program.csऔर जोड़ें- यदि
#if NETCOREAPP3_1
    Application.SetHighDpiMode(HighDpiMode.SystemAware);
#endif

अब आप MyWinFormsAppविजुअल स्टूडियो 2019 का उपयोग करके प्रोजेक्ट खोल सकते हैं ( मुझे लगता है कि आप विज़ुअल स्टूडियो 2017 का भी उपयोग कर सकते हैं, लेकिन मुझे यकीन नहीं है ) और डबल क्लिक करें Form1.csऔर आपको यह देखना चाहिए:

यहां छवि विवरण दर्ज करें

ठीक है, टूलबॉक्स खोलें ( Ctrl+W,X) और अपने ऐप पर नियंत्रण जोड़ना शुरू करें और इसे सुंदर बनाएं।

आप डिज़ाइनर के बारे में और अधिक पढ़ सकते हैं @ विंडोज फॉर्म। नेट कोर डिज़ाइनर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.