2017-05-18 10 views
16

के रूप में NetCoreApp संकलित करें मैंने विजुअल स्टूडियो 2017 में नेटकोर ऐप (v1.1) बनाया है। जब मैं इसे संकलित करता हूं, तो मुझे निर्मित प्रोजेक्ट के लिए अपेक्षित EXE के बजाय एक डीएलएल उत्पादित होता है। मैंने csproj फ़ाइल की जांच की और पुष्टि की कि आउटपुट प्रकार exe पर सेट है, लेकिन कोई पासा नहीं है।VS2017 EXE

कोई विचार क्यों वीएस2017 अभी भी एक डीएलएल का उत्पादन कर रहा है? मुझे यकीन है कि यह कहीं एक त्वरित सेटिंग है जिसे मैं भूल गया ... यह भी 1 बजे है। :)

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

    <PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    </PropertyGroup> 

    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    </PropertyGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\Core.EF.SqlServer\Core.EF.SqlServer.csproj" /> 
    </ItemGroup> 

</Project> 

उत्तर

25

.NET कोर अनुप्रयोग .dll फ़ाइलें होने चाहिए। OutputType इस मामले में Exe पर सेट है जिसका अर्थ है "निष्पादन योग्य" और यह सुनिश्चित करने के लिए आवश्यक सब कुछ करता है कि आउटपुट चलने योग्य हो (Main() विधि से प्रविष्टि बिंदु, .runtimeconfig.json फ़ाइल)। जिसके परिणामस्वरूप dll फ़ाइल का उपयोग कर चलाया जा करने के लिए है:

dotnet yourapp.dll 

इस dll फ़ाइल है कि .net कोर क्रम (विंडोज, लिनक्स, MacOS) द्वारा समर्थित हैं सभी प्लेटफ़ॉर्म पर काम करता है। इसे "पोर्टेबल" या "फ्रेमवर्क आश्रित" परिनियोजन कहा जाता है।

यदि आप वास्तव में .exe फ़ाइल चाहते हैं, तो स्वयं निहित तैनाती पर विचार करें। यह एक आउटपुट बनाएगा जिसमें .NET कोर रनटाइम की अपनी प्रति और yourapp.exe फ़ाइल शामिल है - लेकिन यह प्रकाशित ऐप का आकार भी बढ़ाती है और रनटाइम के नए संस्करण जारी होने पर इसे अपडेट करने की आवश्यकता होती है। इसके अलावा, परिणामस्वरूप एप्लिकेशन केवल प्रकाशित ऑपरेटिंग सिस्टम पर काम करता है।

परिनियोजन विकल्पों और उन्हें सेट अप करने के तरीके के बारे में अधिक जानकारी के लिए .NET Core application deployment देखें।

+3

विभिन्न तैनाती रणनीतियों की जानकारी के लिए धन्यवाद। इससे थोड़ा और नेट की समझ में मदद मिली। – ajawad987