में कनवर्ट करना एक प्रोग्राम है जो पूरी तरह से सी # में लिखा गया है जो .NET Framework 2.0 को लक्षित करता है। क्या कोई तरीका है कि मैं किसी भी तरह संकलित (अनुवाद) प्रबंधित कर सकता हूं EXE को मूल में तो यह .NET-अज्ञेयवादी हो सकता है? मुझे पता है कि उस उद्देश्य के लिए शायद वाणिज्यिक उत्पाद हैं ... लेकिन वे थोड़ा महंगा हैं।.NET ऐप को x86 देशी कोड
समस्या यह है कि हम Windows XP चलाने वाले कंप्यूटरों पर प्रोग्राम को तैनात करना चाहते हैं, जिसमें .NET Framework स्थापित नहीं है। एक आवश्यकता भी है कि प्रोग्राम का आकार 500 केबी (1 एमबी अधिकतम) से अधिक नहीं होना चाहिए क्योंकि इसे वेब सर्वर से डाउनलोड किया गया है (अब आकार 255 केबी है)। यही कारण है कि हम किसी भी तरह से डाउनलोड किए गए प्रोग्राम की फ़ाइल में एक पूर्ण .NET FX (या यहां तक कि एक कम) संलग्न नहीं कर सकते हैं।
स्पष्ट रूप से यह एक भयानक सॉफ़्टवेयर इंजीनियरिंग त्रुटि है जिसे पता चला और पहले से बचा जाना चाहिए ताकि हम इसके बजाय सी ++ जैसी मूल तकनीकों का उपयोग कर सकें।
हमने अब नोवेल के मोनो - लिनक्स, मैक और विंडोज के लिए .NET Framework का एक ओपन-सोर्स कार्यान्वयन करने का प्रयास किया है। मोनो में सी # कंपाइलर, आईडीई, रनटाइम (सीएलआर) और क्लास लाइब्रेरी असेंबली शामिल हैं (जैसे System.dll और mscorlib.dll - जीएसी में स्थापित .NET की क्लास लाइब्रेरी असेंबली की तरह)। हमने सीएलआर फाइलों का पता लगाने और हमारे कार्यक्रम की फाइल और कुछ असेंबली के साथ उनको शिप करने का प्रयास किया है। इस तरह प्रोग्राम को उपयोगकर्ता के कंप्यूटर पर "mono program.exe" (कमांड प्रॉम्प्ट) चलाकर बुलाया जा सकता है। अंतिम उपयोगकर्ता सीएलआर फ़ाइलों (mono.exe और mono.dll) के लिए इस तरह के उपयोग की असुविधा के अलावा कुल मिलाकर 2.5 एमबी हो गया जो वांछित 500 Kb या यहां तक कि 1 एमबी से भी अधिक है।
तो, हम कोई विकल्प नहीं एक संकलक द्वारा एक देशी एक के लिए हमारी नेट अनुप्रयोग का अनुवाद करने के साथ छोड़ दिया है, लेकिन सवाल बनी हुई है - क्या संकलक हम का उपयोग करना चाहिए और जहां हम एक मिल सकता है ...
अब के लिए मैंने माइक्रोसॉफ्ट रिसर्च द्वारा सिंगुल्युलर ओएस प्रोजेक्ट पर ठोकर खाई है। यह एक ओपन-सोर्स रिसर्च ओएस है जो प्रबंधित कोड (कम से कम भाग में) में लिखा गया है। सिंगुल्युलिटी ओएस में एक बार्टोक कंपाइलर शामिल है जिसे ओएस एक प्रबंधित प्रोग्राम को मूल (x86 32 बिट) में अनुवाद करने के लिए उपयोग करता है। यह ध्यान दिया जाना चाहिए कि Bartok .NET 2.0 के सभी पहलुओं को देशी कोड में अनुवाद नहीं कर सकता है, लेकिन उनमें से अधिकांश। हालांकि मैंने अभी तक एकवचनता का उपयोग नहीं किया है ...
यदि आप मुझे समस्या के बारे में कुछ उपयोगी टिप्स और सलाह प्रदान कर सकते हैं, तो सिंगुल्युलिटी ओएस और बार्टोक कंपाइलर के साथ अपना अनुभव प्रदान कर सकते हैं, तो मैं वास्तव में आपका आभारी रहूंगा। या उस समस्या के लिए एक और दृष्टिकोण जिसे मैंने अनदेखा किया है और इसे हल करने के तरीके हैं।
अग्रिम में बहुत बहुत धन्यवाद!
अंत में, मोनो की पूर्ण एओटी सुविधा (कॉलम रोजर्स की सलाह पर) का उपयोग करके मैंने एक प्रोग्राम.exe.dll उत्पन्न करने में कामयाब रहा है जिसमें सीएलआई हेडर की कमी है। तो यह मुझे देशी डीएल की तरह दिखता है। हालांकि मैं यह नहीं समझ सकता कि उस डीएल को एक्सई में कैसे परिवर्तित करें या इसे परिचालित करें। इसके अलावा यह डीएल मुख्य कार्य जैसे ब्याज के किसी भी कार्य को बेनकाब नहीं करता है।
लेस शिकार: http://stackoverflow.com/questions/45702/is-there-some-way-to-compile-a-net-application-to-native- कोड –
क्या आप इस क्रॉस प्लेटफॉर्म को बनाने की कोशिश कर रहे हैं, या फ्रेमवर्क पुस्तकालयों पर निर्भरता को हटा दें? –
मैं सिर्फ .NET Framework की निर्भरताओं को हटाने की कोशिश कर रहा हूं, इसलिए इसे Windows XP w/o .NET FX पर चलाया जा सकता है। – Vlad