जब मैं प्रोग्रामिंग की बात करता हूं तो मैं शुरुआत करता हूं लेकिन मुझे यकीन था कि सार्वभौमिक नियमों में से एक यह था कि एक कार्यक्रम मुख्य() से शुरू होता है। जब मैं एक WPF प्रोजेक्ट बनाता हूं तो मुझे कोई नहीं दिखाई देता है। क्या मुख्य() ने बस WPF में कुछ अलग नाम दिया है?कोई मुख्य() WPF में?
उत्तर
यह निर्माण के दौरान उत्पन्न होता है, लेकिन आप अपना खुद का प्रदान कर सकते हैं (इसे आवश्यकतानुसार परियोजना-गुणों में असंबद्ध कर सकते हैं)। एक ऐप फ़ाइल के लिए obj/डीबग में देखें; मैं के साथ App.g.i.cs
("C# 2010 एक्सप्रेस" सौजन्य से) है:
namespace WpfApplication1 {
/// <summary>
/// App
/// </summary>
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public partial class App : System.Windows.Application {
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
#line 4 "..\..\..\App.xaml"
this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
#line default
#line hidden
}
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
WpfApplication1.App app = new WpfApplication1.App();
app.InitializeComponent();
app.Run();
}
}
}
वही बात 'App.g.cs' में भी मौजूद है। लेकिन मैंने 'मुख्य()' में जोड़ने की कोशिश की और हर बार जब मैं अपनी परियोजना का पुनर्निर्माण करूंगा, तो यह आपके पास जो कुछ है, उस पर वापस आ जाएगा। किसी अन्य वर्ग में अपना खुद का निर्माण करने का प्रयास किया, लेकिन परियोजना गुण केवल MyProject.App को पाता है, अन्य वर्ग नहीं, इसलिए इसे पुनर्निर्देशित नहीं किया जा सकता है। – vapcguy
Main()
संकलन के दौरान उत्पन्न होता है। आप इसे App.g.cs
(obj/{Debug,Release}
फ़ोल्डर में) में पा सकते हैं।
main()
एक आवेदन के लिए एक मानक प्रवेश बिंदु है, लेकिन उन सभी एप्लिकेशन को जिस तरह से संरचित कर रहे हैं। एक एक्सएएमएल प्रोजेक्ट में, App.XAML फ़ाइल एंट्री पॉइंट निर्दिष्ट करती है जहां यह StartupUri="MainWindow.xaml"
कहती है।
जैसा कि यह दूसरों द्वारा बताया गया है, वास्तविक मुख्य कार्य परियोजना में एक्सएएमएल फाइलों की सामग्री के आधार पर उत्पन्न होता है।
Main()
स्वचालित रूप से CLR और WPF द्वारा प्रदान की जाती है।
सी # कंपाइलर एक कमांड लाइन स्विच /m
लेता है जो Main()
के कार्यान्वयन वाले प्रकार को निर्दिष्ट करता है। सम्मेलन से, यदि कोई स्टार्टअप ऑब्जेक्ट स्पष्ट रूप से निर्दिष्ट नहीं किया गया है, तो सीएलआर किसी भी कक्षा को देखेगा जिसमें स्थिर Main()
विधि है और इसे कॉल किया जाएगा। WPF के मामले में
(@Marc बजरी के रूप में उसकी टिप्पणी में बताया), जब App.xaml
बनाया गया है और/मी स्विच सी # संकलक प्रवेश बिंदु के रूप में उस वर्ग का उपयोग करने के लिए निर्दिष्ट किया जाता है Main()
स्वचालित रूप से उत्पन्न होता है। यदि आप प्रोजेक्ट गुणों को देखते हैं, तो आपको स्टार्टअप ऑब्जेक्ट चुनने के लिए एक सेटिंग मिल जाएगी। तो यदि आप चाहते हैं, तो आप अपनी खुद की कक्षा प्रदान कर सकते हैं जो Main()
लागू करता है।
ध्यान दें कि यह Application
उदाहरण बनाने के लिए आप पर ज़िम्मेदारी रखेगा और यह सुनिश्चित करने के लिए किविधि को कॉल करें, ताकि WPF आधारभूत संरचना ठीक से शुरू हो सके।
दरअसल, बिना '/ m' के * यह * देखभाल * किस प्रकार कहा जाता है; यदि आप स्पष्ट नहीं हैं तो यह ** ** किसी भी ** उपयुक्त 'मुख्य' विधि को खोजने का प्रयास करता है, और यदि शिकायतें 0 या उससे अधिक पाती हैं तो शिकायत करती है। उदाहरण के तौर पर, भाषा spec (§1.1) में "हैलो वर्ल्ड" नमूना टाइप नाम के रूप में 'हैलो' का उपयोग करता है। –
पेडेंटिक होने के लिए: यह कहना सही नहीं है कि 'मुख्य() 'सीएलआर (रनटाइम) द्वारा प्रदान किया जाता है, यह वास्तव में संकलक है जो इसे उत्पन्न करता है। –
दर्शकों को याद दिलाने के लिए मेरा +1 जोड़ा गया है, उन्हें अपने स्वयं के एप्लिकेशन इंस्टेंस (यानी 'MyApp.App ऐप = नया MyApp.App();') में जोड़ना होगा और पिछले पर की तरह '.Run() 'पर कॉल करें। 'मुख्य()' होगा। अच्छा निर्णय। साथ ही, 'app.InitializeComponent(); 'app.Run()' से पहले, और सौभाग्य से हमारे लिए, मूल' InitializeComponent() 'विधि अभी भी है (App.g.cs में देखा गया है, इसलिए नहीं) उसे वापस जोड़ने की जरूरत है!)। – vapcguy
मुख्य() विधि स्वचालित रूप से बनाया जाता है। आप अपने खुद के आप के लिए है प्रदान करना चाहते हैं (VS2013 और VS2017 में परीक्षण किया गया):
- राइट-क्लिक करें समाधान एक्सप्लोरर में App.xaml, चुनें गुण 'पेज' के लिए
- बदलें 'एक्शन का निर्माण' (प्रारंभिक मान 'एप्लिकेशनडिफिनिशन' है)
फिर App.xaml.cs. में एक मुख्य() विधि जोड़ें। यह इस तरह से हो सकता है:
[STAThread]
public static void Main()
{
var application = new App();
application.InitializeComponent();
application.Run();
}
बिल्ड एक्शन टिप कुंजी थी, धन्यवाद – joshcomley
बहुत बढ़िया! स्वीकृत उत्तर होना चाहिए। – Jack
'[STAThread]' क्या है? मैं भी एक नौसिखिया हूं और मुझे नहीं पता ... – Jepessen
मैं फ़ाइलों है कि एक और परियोजना है कि एक नया एक में एक MainWindow बिना किया गया था और यह त्रुटि आई में लोड नहीं होगा की नकल की।
एक खिड़की फ़ाइल इस फ़ाइल की स्टार्टअप uri बनाने और स्थापित करने के बाद मैं App.xaml की ApplicationDefinition को पृष्ठ बंद संपत्ति 'एक्शन बनाएं':
मेरे लिए यह एंड्रियास Kahler के विपरीत दृष्टिकोण तय करने के लिए कर रही है ले लिया।
- 1. क्या कोई मुझे WPF
- 2. यदि कोई EXE WPF
- 3. WPF सिस्टम ट्रे चिह्न बनाने के लिए कैसे जब कोई "मुख्य" मेजबान खिड़की से मौजूद है
- 4. मुख्य विंडो सीमाओं के बाहर/बाहर wpf सामग्री प्रदर्शित करना
- 5. थ्रेड में मुख्य "java.lang.UnsatisfiedLinkError: java.library.path में कोई jpcap
- 6. vxWorks में कोई मुख्य() फ़ंक्शन क्यों नहीं है?
- 7. मुख्य
- 8. मुख्य
- 9. मुख्य
- 10. मुख्य()
- 11. मुख्य थ्रेड
- 12. मुख्य स्ट्रिंग वैरिएबल से मुख्य()
- 13. मुख्य
- 14. मुख्य()
- 15. wpf
- 16. NSOperation मुख्य में NSAutoreleasePool?
- 17. मुख्य में सी #
- 18. नामस्थान में मुख्य
- 19. RuntimeError: मुख्य थ्रेड मुख्य लूप
- 20. डब्ल्यूपीएफ में शीर्ष 3 मुख्य अवधारणाएं क्या हैं?
- 21. पृष्ठभूमिवर्कर और मुख्य थ्रेड
- 22. एफ #: क्या इसके लिए कोई UI (जैसे WPF) नहीं है?
- 23. WPF
- 24. WPF
- 25. कोई भी WPF आधारित मार्कडाउन रेंडरर?
- 26. WPF के लिए कोई डिफ़ॉल्ट कन्वर्टर्स?
- 27. WPF
- 28. WPF
- 29. एंड्रॉइड में मुख्य() कहां है?
- 30. मैं टूलबार में कोई आइटम कैसे बना सकता हूं WPF
आप App.xaml.cs. पर ऑनस्टार्टअप को ओवरराइड करके समकक्ष कार्यक्षमता प्राप्त कर सकते हैं। StartupEventArgs.Args में कमांडलाइन तर्क शामिल हैं। – Foole
@ फ़ोल, नहीं, आप नहीं देख सकते, [यह] (http://stackoverflow.com/q/22460116/1997232) प्रश्न देखें। – Sinatr