2015-11-24 8 views
26

बस आरसी 1 उपकरण स्थापित किया और टेम्पलेट में क्या बदल गया है यह देखने के लिए एक नई वेब परियोजना बनाई।compilationOptions.emitEntryPoint का क्या अर्थ है?

मैंने देखा है कि project.json अब शामिल हैं:

"compilationOptions": { 
    "emitEntryPoint": true 
} 

लेकिन यह इस क्या करता है स्पष्ट नहीं है।

क्या किसी के पास कोई विचार है?

उत्तर

25

नीचे उल्लेख किया है: ऐसा लगता है कि यह संकलक करने के लिए एक झंडा संकेत मिलता है कि इस परियोजना को एक सांत्वना आवेदन एक पुस्तकालय बनाम है (अर्थात्: एक सांत्वना आवेदन public static void Main() शामिल होना चाहिए)

आप कर सकते हैं यहां source से देखें।

नई RC1 डिफ़ॉल्ट वेब अनुप्रयोग टेम्पलेट में, आप Startup.cs के तल पर ध्यान देंगे वहाँ एक नया अभिव्यक्ति शरीर विधि है कि प्रवेश बिंदु के रूप में कार्य करता है:

public static void Main(string[] args) => WebApplication.Run<Startup>(args); 

आप इस विधि को निकाल देते हैं तो प्रदर्शन निर्माण (dnu build) आप एक त्रुटि प्राप्त होगी:

error CS5001: Program does not contain a static 'Main' method suitable for an entry point 

हालांकि, अगर आप false को emitEntryPoint झंडा बदल कर फिर से निर्माण करने के लिए प्रयास करते हैं, यह सफल होगा। ऐसा इसलिए है क्योंकि यह कंसोल ऐप के बजाय लाइब्रेरी बना रहा है।

10

मैं इसे source में देखता हूं;

var outputKind = compilerOptions.EmitEntryPoint.GetValueOrDefault() ? 
    OutputKind.ConsoleApplication : OutputKind.DynamicallyLinkedLibrary; 

ऐसा लगता है कि संकलक एक कंसोल आवेदन या एक पुस्तकालय बनाने के लिए है कि क्या कहता है।

अतिरिक्त, यदि आप वीएस2015 में एक नया क्लास लाइब्रेरी (पैकेज) और कंसोल एप्लिकेशन (पैकेज) बनाते हैं तो आप देखेंगे कि कंसोल एप्लिकेशन के लिए प्रोजेक्ट.जेसन निम्नलिखित में शामिल है, जबकि क्लास लाइब्रेरी नहीं है;

"compilationOptions": { 
    "emitEntryPoint": true 
} 
+0

यह समझ में आता है। धन्यवाद –

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