2016-10-18 8 views
7

के साथ .NET कोर ऐप संकलित करना मैं एएसपी.NET कोर 1.0 पर एक आरईएसटी एपीआई बना रहा हूं। उत्पादन में यह आईएमएचओ बहुत उपयोगी होगा जो कि जेआईटी का उपयोग न करें क्योंकि ऐप के साथ डॉकर कंटेनर ऊपर और नीचे स्केलिंग कर रहे हैं, सीआई के दौरान और अधिक बार फिर से तैनात कर रहे हैं, इसलिए प्रत्येक तैनात कंटेनर के लिए समय-समय पर संकलन भयानक झटके का कारण बनता है, एलबी स्वास्थ्य जांच मौत और अन्य पीड़ा।कोररेट/अन्य एओटी

जैसा कि मैंने पढ़ा है, डॉटनेट सीएलआई के साथ देशी संकलन बंद कर दिया गया है। मैंने CoreRT के साथ निर्माण करने की कोशिश की लेकिन बिना किस्मत (जटिलता के कारण मांग पर विवरण)।

के बाद से यह सवाल काफी सार मैं नमूना कोड या विस्तृत जानकारी प्रदान नहीं कर रहा हूँ, इसलिए शुरू करने के लिए वहाँ कुछ सवाल बजाय कर रहे हैं:

  1. मेरी धारणा सही है - आगे-ऑफ-समय संकलन का समाधान होगा प्रत्येक पथ के धीमे पहले निष्पादन के साथ समस्या - क्या कोई अन्य समाधान नहीं है?
  2. यदि यह सच है, तो वर्तमान में .NET कोर से "मूल" ऐप (ubuntu x64 लक्ष्य) बनाना संभव है?
  3. यदि यह है, तो सबसे अच्छा अभ्यास क्या है - मैं इसे कैसे कर सकता हूं? क्या किसी के साथ इसका अनुभव है?

(लक्ष्य मंच ubuntu-14.04-64 डोकर छवि के साथ-साथ संकलन मंच होगा। के लिए विकसित प्रयोजनों के भी पर OSX यह संकलित करने के लिए अच्छा होगा।)

अग्रिम धन्यवाद।

+0

यदि इस चरण में ऐसा करने योग्य है तो मुझे आश्चर्य है कि माइक्रोसॉफ्ट ने अभी तक इसकी घोषणा क्यों नहीं की है। तो मेरी समझ यह है कि समय सही नहीं है और आपको इस तरह के एक बड़े विषय से परेशान नहीं होना चाहिए। –

+0

क्या आप निश्चित हैं? कोरआरटी ​​प्रोजेक्ट काफी आशाजनक लगता है [https://github.com/dotnet/corert/blob/master/Documentation/how-to-build-and-run-ilcompiler-in-console-shell-prompt.md] – rudolfdobias

+0

हर कोई जानता है यह वादा कर रहा है और माइक्रोसॉफ्ट ने पिछले साल कनेक्ट में भी इसे डेमो किया था। लेकिन इससे पहले उत्पादन की गुणवत्ता तक पहुंच जाती है, इसे अकेला छोड़ दें। –

उत्तर

5

इस समय समय संकलन से पहले पूर्ण मूल होने के लिए संभव नहीं है। यह ऊपर सूचीबद्ध कोरआरटी ​​परियोजना के लक्ष्यों में से एक है लेकिन किसी भी राज्य में नहीं है जिसे मैं उत्पादन तैयार करता हूं। पिछले साल कनेक्ट पर डेमो को नमक के एक बहुत बड़े अनाज के साथ लिया जाना चाहिए। उदाहरण के लिए उनके पास अभी भी reflection subsystem नहीं है। हालांकि, हमारे पास कुछ समाधान हैं जो जेआईटी समय में उत्पन्न होने वाली कोड की मात्रा को बहुत कम कर सकते हैं। .NET कोर के लिए टूलिंग को CrossGen कहा जाता है और यह इन दिनों बहुत बेक्ड है।

जबकि मेरा ध्यान है, मैं यह भी उल्लेख करूंगा कि हम एनजीईएन/क्रॉसजेन प्रारूप के विकास पर काम कर रहे हैं जो ठेठ एनआई फाइलों के साथ जुड़े सामान्य दर्द का एक बड़ा हिस्सा कम करता है। उसके बाद ReadyToRun

आशा है कि मदद करता है। आपको ओर कुछ पूछना है तो मुझे बताइए।

प्रकटीकरण: मैं UWP के लिए .NET मूल निवासी क्रम और संकलक टीम (CoreRT और LLILC आदि के लिए एक बहन परियोजना)

+0

आपके ध्यान के लिए धन्यवाद, मैं निश्चित रूप से इन पर ध्यान देता हूं। - उपरोक्त प्रश्न पर वापस - लगभग हर पथ के लिए स्टार्टअप समय 10-20 है। और यह अभी तक छोटी परियोजना है। – rudolfdobias

+0

तो मैंने क्रॉसजेन का उपयोग करने की कोशिश की। इसे nuget पैकेज कैश के दसवें फ़ोल्डर स्तर में कहीं मिला। लेकिन अब मुझे एहसास है कि मुझे नहीं पता कि इसका उपयोग कैसे किया जाए क्योंकि उसके लिए लगभग कोई दस्तावेज नहीं है। जब मैं इसे प्रोजेक्ट पर चलाता हूं तो यह मुझे बताता है कि 'System.Private.CoreLib.dll' गायब है। क्या आप कृपया मुझे कुछ बुनियादी निर्देश दे सकते हैं? मैं एक नया सवाल खोल सकता हूं। – rudolfdobias

+1

आपको भटकने से बचने के लिए, मैंने क्रॉसजेन के देवताओं से संपर्क किया है। उम्मीद है कि उनमें से एक हमें हल कर सकता है। –

3

पर काम https://github.com/dotnet/coreclr/blob/master/Documentation/building/crossgen.md पर CrossGen का उपयोग कर के लिए एक गाइड है। यह बहुत पुराना है - मैं देखूंगा कि मैं इसे कभी-कभी अपडेट कर सकता हूं या नहीं। CrossGen का उपयोग करने का सबसे महत्वपूर्ण हिस्सा क्रॉसजेन को उन सभी निर्भरताओं के स्थान को बताने के लिए कमांड लाइन पर -Platform_Assemblies_Paths स्विच निर्दिष्ट करना है (उदा।, System.Private.CoreLib.dll)।

उम्मीद है कि मदद करता है। अगर आप किसी भी और मुद्दे में भाग लेते हैं तो कृपया मुझे बताएं।

संबंधित मुद्दे