2016-10-24 3 views
6

पर स्वयं निहित एएसपी .NET कोर एप्लिकेशन चलाना सबसे पहले, मैं एक लिनक्स नौसिखिया हूं इसलिए मुझे माफ़ कर दो।उबंटू

मैंने एक एएसपी .NET कोर एप्लिकेशन को एक स्व-निहित ऐप लक्ष्य उबंटू के रूप में प्रकाशित किया है। प्रकाशन ठीक काम करता प्रतीत होता है। मैंने फ़ाइलों को एक सुंदर वेनिला उबंटू मशीन में कॉपी किया है। अब, मैं अपना आवेदन कैसे चला सकता हूं? मेरी समझ यह है कि क्योंकि यह एक स्व-निहित .NET कोर एप्लिकेशन है, मुझे .NET कोर को डाउनलोड और स्थापित करने की आवश्यकता नहीं है। मेरे ऐप में इसकी हर चीज होनी चाहिए।

सभी ट्यूटोरियल कहने लगते हैं कि मुझे $ dotnet रन कॉल करना चाहिए। हालांकि "डॉटनेट" कमांड लाइन मौजूद नहीं है (क्या इसे स्वयं निहित फ़ोल्डर में प्रकाशित किया जाना चाहिए ??) तो अगर मैं इसे कॉल करता हूं, तो मुझे "कमांड नहीं मिला" मिलता है। बेशक मैं .NET कोर डाउनलोड कर सकता हूं, लेकिन क्या यह पूरी आत्मनिर्भर अवधारणा के खिलाफ नहीं जाता है? यहां उन फ़ाइलों का नमूना दिया गया है जिन पर मैं प्रतिलिपि बना रहा हूं।

enter image description here

+0

मेरे पास कोई विचार नहीं है क्योंकि मैं डॉटनेट देव नहीं हूं, लेकिन मुझे लगता है कि आपको पहले उबंटू पर डॉटनेट क्ली स्थापित करने की आवश्यकता हो सकती है। क्या आपको यह चाहिए? https://github.com/dotnet/cli –

+0

मैं आपके मूल्यांकन से सहमत हूं सिवाय इसके कि ऐसा लगता है कि "स्वयं निहित" फैशन में एप्लिकेशन को प्रकाशित करने के मुख्य बिंदुओं में से किसी एक को डाउनलोड करने की आवश्यकता नहीं है। डॉटनेट क्ली उस के लिए अपवाद हो सकता है लेकिन मुझे ऐसा नहीं लगता है। – Mark

+0

मैं डॉकर सेवा के बिना बहुत से "स्वयं निहित" डॉकर कंटेनर का उपयोग करता हूं;) –

उत्तर

8

उत्तर

अब, कैसे मैं अपने आवेदन चला सकता हूँ? मेरी समझ यह है कि क्योंकि यह एक स्व-निहित .NET कोर एप्लिकेशन है, मुझे .NET कोर को डाउनलोड और स्थापित करने की आवश्यकता नहीं है। मेरे ऐप में इसकी हर चीज होनी चाहिए।

आप सही हैं। निष्पादन योग्य चलाएं।

जब आप स्वयं निहित ऐप बनाते हैं, तो प्रकाशित आउटपुट "में आपके ऐप को लॉन्च करने के लिए आवश्यक फाइलों (दोनों ऐप फाइलें और सभी .NET कोर फ़ाइलें) शामिल हैं।" इसमें निष्पादन योग्य शामिल है।

उदाहरण तैनाती

यहाँ एक सरल आत्म निहित आवेदन के लिए dotnet publish -c release -r ubuntu.14.04-x64 का उत्पादन होता है आत्म निहित। प्रकाशित निर्देशिका को उबंटू में कॉपी करें और निष्पादन योग्य चलाएं।

C: \ MyApp \ बिन \ रिहाई \ netcoreapp1.0 \ ubuntu.14.04-x64 \ प्रकाशित \

... 

libsos.so 
libsosplugin.so 
libuv.so 
Microsoft.CodeAnalysis.CSharp.dll 
Microsoft.CodeAnalysis.dll 
Microsoft.CodeAnalysis.VisualBasic.dll 
Microsoft.CSharp.dll 
Microsoft.VisualBasic.dll 
Microsoft.Win32.Primitives.dll 
Microsoft.Win32.Registry.dll 
mscorlib.dll 
mscorlib.ni.dll 
MyApp      <------- On Ubuntu, run this executable 
MyApp.deps.json      and you will see Hello World! 
MyApp.dll 
MyApp.pdb 
MyApp.runtimeconfig.json 
sosdocsunix.txt 
System.AppContext.dll 
System.Buffers.dll 
System.Collections.Concurrent.dll 
System.Collections.dll 

... 

C: \ MyApp \ project.json

{ 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": "1.0.1" 
     } 
    } 
    }, 
    "runtimes": { 
    "ubuntu.14.04-x64" : {}, 
    "win10-x64" : {} 
    } 
} 

C: \ MyApp \ Program.cs

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     System.Console.WriteLine("Hello World!"); 
    } 
} 

भी देखें

This document फ्रेमवर्क-निर्भर और स्वयं निहित तैनाती के बीच अंतर करता है।

1

इसका यह देखते हुए कि साथ .netstandard2 +, वहाँ दो आवश्यक कदम हैं लायक:

  • संपादित करें।csproj फ़ाइल और लक्ष्य runtimes की सूची के साथ एक पंक्ति जोड़ें:

< PropertyGroup>

<OutputType>Exe</OutputType> 
<TargetFramework>netcoreapp2.0</TargetFramework> 

<!-- Add this with the required runtimes --> 
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers> 

</PropertyGroup>

  • पुनर्स्थापित और ऐप्लिकेशन का निर्माण: dotnet restore && dotnet build -c release -r RUNTIME

जहां RUNTIME csproj फ़ाइल में सूचीबद्ध रनटाइम में से एक है।

महत्वपूर्ण रूप से ध्यान दें कि आप .csproj फ़ाइल संपादन के बिना ऐसा नहीं कर सकते हैं और डॉटनेट पुनर्स्थापन को कॉल कर सकते हैं, या रनटाइम nuget से डाउनलोड नहीं किया जाएगा, और -r ... ध्वज काम नहीं करेगा।