.NET Core में SDK और रनटाइम के बीच अंतर क्या है?


99

मैंने कई लेख पढ़े हैं, जिनमें यह भी शामिल है , फिर भी मैं अभी भी यह पता नहीं लगा सकता कि क्या अंतर है, और उन्होंने इसे सरल शब्दों में या बिल्कुल भी नहीं समझाया है।

क्या कोई यह स्पष्ट कर सकता है कि .NET SDK और .NET रनटाइम के बीच क्या अंतर है?

अद्यतन: तुलना का उपयोग करना बहुत सराहनीय होगा। सरल अंग्रेजी के साथ सादृश्य अत्यधिक शैक्षिक है।

जवाबों:


58

.Net कोर गाइड के अनुसार , .NET कोर निम्नलिखित मदों से बना है

  • एक .NET रनटाइम, जो एक प्रकार की प्रणाली, असेंबली लोडिंग, एक कचरा कलेक्टर, देशी इंटरॉप और अन्य बुनियादी सेवाएं प्रदान करता है।
  • ढांचा पुस्तकालयों का एक सेट, जो आदिम डेटा प्रकार, ऐप रचना प्रकार और मौलिक उपयोगिताओं प्रदान करता है।
  • SDK टूल और भाषा कंपाइलरों का एक सेट जो .NET डेवलपर SDK में उपलब्ध आधार डेवलपर अनुभव को सक्षम करता है।
  • 'डॉटनेट' ऐप होस्ट, जिसका उपयोग .NET कोर ऐप लॉन्च करने के लिए किया जाता है। यह रनटाइम का चयन करता है और रनटाइम को होस्ट करता है, एक असेंबली लोडिंग नीति प्रदान करता है और ऐप लॉन्च करता है। उसी होस्ट का उपयोग एसडीके टूल्स को उसी तरह से लॉन्च करने के लिए भी किया जाता है।

SDK सभी आवश्यक सामान है / जो .NET कोर एप्लीकेशन को विकसित करना आसान बनाता है, जैसे कि CLI और एक कंपाइलर।

रनटाइम "वर्चुअल मशीन" है जो एप्लिकेशन को होस्ट करता है / चलाता है और आधार ऑपरेटिंग सिस्टम के साथ सभी इंटरैक्शन को अमूर्त करता है।

एप्लिकेशन को चलाने के लिए केवल बाद की आवश्यकता होती है, लेकिन एप्लिकेशन को विकसित करने के लिए पूर्व की आवश्यकता होती है।


11
क्या इसका मतलब है कि उपयोगकर्ता को एप्लिकेशन विकसित करने के लिए दोनों (एसडीके + रनटाइम) स्थापित करना होगा या इसका मतलब है कि एसडीके को केवल आवश्यक है क्योंकि इसमें रनटाइम भी शामिल है?
पुचैग

6
@Puchacz मैंने अभी SDK इंस्टॉलर डाउनलोड किया है और इसमें Core Runtime और Asp.Net Core Runtime भी हैं।
frakon

1
वह मेरे किसी मतलब का नहीं है। सीएलआई को एक 'फ्रेमवर्क पर निर्भर' निष्पादन योग्य निष्पादित करने के लिए आमंत्रित किया जाता है जैसे dotnet myapp.dllकि यदि किसी ऐप को चलाने के लिए क्ली की आवश्यकता होती है तो यह रनटाइम का हिस्सा कैसे नहीं हो सकता है?
न्यूट्रिनो

1
यह भी जवाब नहीं देता कि क्या कोर लाइब्रेरी रनटाइम या एसडीके का हिस्सा हैं।
न्यूट्रिनो

43

रनटाइम : ऐप्स चलाने के लिए

एसडीके (रनटाइम + टूलिंग) : ऐप्स बनाने और चलाने के लिए


2
मेरा एक प्रश्न है, विजुअल स्टूडियो से अपना ऐप चलाने से पहले, इसे सही तरीके से बनाने की आवश्यकता है? फिर मुझे हमेशा रनटाइम की बजाय एसडीके की जरूरत होगी।
tRuEsatm

2
पहले संकलित भाषाओं का निर्माण किया जाना चाहिए। कोई फर्क नहीं पड़ता कि आप किस आईडीई का उपयोग करते हैं, एसडीके को एप्लिकेशन में स्रोत कोड बनाने के लिए आवश्यक है।
TZU

क्या रनटाइम वास्तव में एसडीके का हिस्सा है या रनटाइम सिर्फ एसडीके इंस्टॉलर के हिस्से के रूप में एसडीके के साथ पैक किया गया है?
फ्रैंक लियू

39

मैं यहां कुछ भी आविष्कार नहीं कर रहा हूं। बस https://www.microsoft.com/net/download से परिभाषाओं को कॉपी-पेस्ट करना

यहां छवि विवरण दर्ज करें

सॉफ्टवेयर डेवलपमेंट किट ( SDK ) में कमांड लाइन टूल और किसी भी एडिटर (विजुअल स्टूडियो सहित) का उपयोग करके .NET कोर एप्लिकेशन बनाने और चलाने के लिए आवश्यक सभी चीजें शामिल हैं।

क्रम सिर्फ मौजूदा नेट कोर अनुप्रयोगों को चलाने के लिए आवश्यक संसाधन शामिल हैं। रनटाइम एसडीके में शामिल है।


10

रिक स्ट्राल के पोस्ट से साझा करना: आपको कौन सी .NET कोर रनटाइम डाउनलोड की आवश्यकता है?

केवल .NET कोर रनटाइम को एक एप्लिकेशन चलाने के लिए आवश्यक है और इंस्टॉल के बारे में जानकारी प्रदान करता है।

एक आवेदन को विकसित करने, बनाने और प्रकाशित करने के लिए एक एसडीके की आवश्यकता होगी।

dotnet.exeएक रनटाइम इंस्टाल के साथ स्थापित करता है, लेकिन यह केवल एप्लिकेशन को चलाने के लिए जानकारी प्रदान करने के लिए मुख्य सुविधाएँ प्रदान करता है और इंस्टॉल के बारे में जानकारी प्रदान करता है: और । एसडीके स्थापित करने के लिए आपको कुछ भी बनाने, प्रकाशित करने या करने की आवश्यकता है।dotnet mydll.dlldotnet --info

निम्नलिखित कमांड चलाने से इंस्टॉल के बारे में जानकारी मिलेगी:

dotnet --info

यदि कमांड विफल हो जाती है तो इसका मतलब है कि आपके पास .NET कोर रनटाइम सिस्टम में स्थापित या उपलब्ध नहीं है।

नीचे कमांड का एक नमूना आउटपुट है।

$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.101
 Commit:    236713b0b7

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.13
 OS Platform: Darwin
 RID:         osx.10.13-x64
 Base Path:   /usr/local/share/dotnet/sdk/2.2.101/

Host (useful for support):
  Version: 2.2.0
  Commit:  1249f08fed

.NET Core SDKs installed:
  2.1.4 [/usr/local/share/dotnet/sdk]
  2.1.302 [/usr/local/share/dotnet/sdk]
  2.2.101 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

आउटपुट आपको बताता है:

  • स्थापित एसडीके संस्करण
  • सक्रिय रनटाइम संस्करण जो इस डॉटनेट कमांड को चला रहा है
  • सभी स्थापित रनटाइम्स और एसडीके की एक सूची

SDK इंस्टॉल करने से रनटाइम भी इंस्टॉल हो जाता है।


macOS होमब्रेव विशिष्ट

होमब्रेव-कास्क डॉटनेट स्थापित करना, डॉटनेट-एसडीके के साथ संघर्ष करेगा , इसलिए रनटाइम दोनों प्राप्त करने के लिए, और एसडीके डॉटनेट-एसडीके स्थापित करें

brew cask install dotnet-sdk

संक्षेप में, रनटाइम आपके OS को संकलित C-Sharp , C # प्रोग्राम चलाने की अनुमति देगा , और sdk आपको C-Sharp , C # में लिखे प्रोग्राम को संकलित करने की अनुमति देगा ।


यह समझना महत्वपूर्ण है कि आपके पास कई रनटाइम और कई एसडीके स्थापित हो सकते हैं और प्रत्येक प्रोजेक्ट एक अलग का उपयोग कर सकता है। रनटाइम .csprojफ़ाइल में आपके प्रोजेक्ट के रनटाइम स्पेसियर द्वारा निर्धारित किया जाता है :

<TargetFramework>netcoreapp2.1</TargetFramework>

एसडीके या तो अंतिम विश्व स्तर पर स्थापित एसडीके है जो डिफ़ॉल्ट है, या आप समाधान रूट फ़ोल्डर में रखे गए Global.json में एसडीके को स्पष्ट रूप से ओवरराइड कर सकते हैं। निम्नलिखित आरटीएम संस्करण के बजाय अंतिम आरसी एसडीके का उपयोग करने के लिए मेरी परियोजना को स्पष्ट रूप से मजबूर करता है:

{
 "sdk": {
   "version": "2.1.300-rc.31211"
 }
}

आम तौर पर, एक विशिष्ट निचले एसडीके संस्करण का उपयोग करने की आवश्यकता नहीं होनी चाहिए क्योंकि एसडीके पीछे की ओर संगत है और .NET कोर ऐपेटिनो के विभिन्न संस्करणों को v1.0 पर वापस संकलित कर सकता है। IOW, लगभग सभी मामलों में नवीनतम SDK का उपयोग करना ठीक है।

.NET कोर रूंटिम्स

.NET Core Runtimes सबसे छोटे स्व-निहित और विशिष्ट घटक होते हैं और किसी विशिष्ट प्लेटफ़ॉर्म पर .NET .NET चलाने के लिए पूर्ण न्यूनतम होते हैं।

ध्यान दें कि रनटाइम इंस्टॉल में ASP.NET कोर मेटा पैकेज रनटाइम निर्भरता शामिल नहीं है, इसलिए यदि आपका एप्लिकेशन Microsoft.AspNetCore.App या Microsoft.AspNetCore को संदर्भित करता है। तो आपको ASP.NET कोर पैकेज को अलग से डाउनलोड करना होगा। हालाँकि, यदि आप मेटा पैकेज का उपयोग करने के बजाय सभी ASP.NET Core Nuget संकुल को स्पष्ट रूप से संदर्भित करते हैं, तो उन पैकेजों को आपके आवेदन के हिस्से के रूप में तैनात किया जाता है और यह केवल रनटाइम के साथ चल सकता है।

अनिवार्य रूप से आप इंस्टालेशन पैकेज साइज बनाम रनटाइम प्री-इंस्टॉल्ड आवश्यकता के अनुसार व्यापार कर रहे हैं।

संदर्भ:


Microsoft.AspNetCore.Appरनटाइम्स के तहत सूचीबद्ध क्यों किया जाता है ? मुझे लगा कि सीएलआर एक रनटाइम होगा?
रोबोट्रोन

@Robotron तुम सही हो। केवल shared/Microsoft.NETCore.App/<runtime version>रनटम्स हैं। shared/Microsoft.AspNetCore.{App,All}/<aspnetcore version>ASP.NET कोर लाइब्रेरी शामिल हैं। docs.microsoft.com/en-us/dotnet/core/build/...
तूफ़ान

2

SDK सभी आवश्यक सामान है / जो .NET कोर एप्लीकेशन को विकसित करना आसान बनाता है, जैसे कि CLI और एक कंपाइलर।

रनटाइम "वर्चुअल मशीन" है जो एप्लिकेशन को होस्ट करता है / चलाता है और आधार ऑपरेटिंग सिस्टम के साथ सभी इंटरैक्शन को अमूर्त करता है।


2

यहां छवि विवरण दर्ज करें

सारांश के रूप में: यदि आप एसडीके स्थापित करते हैं, तो आपके पास विकास और ऐप चलाने के लिए आवश्यक सब कुछ होगा।


0

एसडीके में आमतौर पर प्रलेखन और अन्य सहायता फाइलें शामिल होती हैं। रनटाइम में इंस्टॉलेशन के लिए केवल बाइनरी फाइलें होती हैं।


2
क्या आपको यकीन है? यह उससे कहीं अधिक स्थापित करता है।
एमिल

एसडीके में उपकरण होते हैं जो एक .net कोर ऐप, जैसे कि कंपाइलर विकसित करने में मदद करते हैं। रनटाइम एक .net कोर एप्लिकेशन को होस्ट करता है और अंतर्निहित ओएस के साथ सभी इंटरैक्शन को संभालता है।
सैयद वकास

0

स्टॉर्मविल्ड के जवाब में जोड़ने के मामले में आपके पास केवल .Net कोर रनटाइम स्थापित है जो आपको निम्न आउटपुट डॉटनेट - एनटीपी से प्राप्त होगा

>PS C:\Users\Administrator> dotnet --info
>
>Host (useful for support):
>  Version: 2.2.3
>  Commit:  6b8ad509b6 
>
>.NET Core SDKs installed:
>  No SDKs were found.
>
>.NET Core runtimes installed:
>  Microsoft.NETCore.App 2.2.3 [C:\Program 
>Files\dotnet\shared\Microsoft.NETCore.App]

0

रनटाइम पर्याप्त है यदि हम हार्डवेयर पर सिर्फ एप्लिकेशन चलाना चाहते हैं, अन्यथा हमें एसडीके (जिसमें रनटाइम और टूलकिट शामिल हैं) को विकसित करने और चलाने की आवश्यकता है।यहां छवि विवरण दर्ज करें


0

सरल शब्दों में, मेरी समझ और लेख के संदर्भ के अनुसार https://karthikekblog.com/net-core-sdk-vs-runtime-vs-hosting-bundle/

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

रनटाइम - इसमें केवल घटकों को .NET कोर एप्लिकेशन को चलाने की आवश्यकता होती है। तो यह सर्वर साइड में स्थापित किया जा सकता है जहां आप एप्लिकेशन को तैनात करते हैं और बिल्ड और डिबग की आवश्यकता नहीं होती है। इसके लिए IIS होस्ट घटकों की अलग से आवश्यकता होती है। इसके बजाय आप विंडोज के लिए होस्टिंग बंडल का उपयोग कर सकते हैं।


-1

जब आप SDK इंस्टॉल करते हैं तो आप उसमें रनटाइम भी प्राप्त करते हैं। इसे नीचे देखें, यह तब स्थापित होता है जब हम एसडीके स्थापित करते हैं।

निम्नलिखित C: \ Program Files \ dotnet पर स्थापित किए गए थे। .NET कोर SDK 2.2.100 • .NET कोर रनटाइम 2.2.0 • ASP.NET कोर रनटाइम 2.2.0

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.