मैं कैसे पता लगा सकता हूं कि .NET फ्रेमवर्क संस्करण और सर्विस पैक क्या स्थापित हैं?


289

ऐसा ही एक प्रश्न पूछा गया था यहाँ है, लेकिन यह .NET 3.5 के लिए विशिष्ट था। विशेष रूप से, मैं निम्नलिखित की तलाश कर रहा हूं:

  1. .NET फ्रेमवर्क संस्करण और सर्विस पैक कौन से हैं, यह निर्धारित करने का सही तरीका क्या है?
  2. क्या रजिस्ट्री कुंजी की एक सूची है जिसका उपयोग किया जा सकता है?
  3. क्या फ्रेमवर्क संस्करणों के बीच कोई निर्भरता है?

2
इस प्रश्न का बारीकी से संबंधित है stackoverflow.com/questions/198931/... और stackoverflow.com/questions/182910/...
पास्कल पैराडिस

हाँ यही है। मैं पहले से ही पहले के बारे में जानता था (यह वह है जिसे मैं अपने प्रश्न में संदर्भित करता हूं)। मैं दूसरे के बारे में नहीं जानता था।
स्कॉट डोरमैन

3
मैं प्रभावित हूं कि कैसे यह प्रश्न (उत्तर सहित) और सभी निकट से संबंधित प्रश्न पूरी तरह से SKU मूल्यों की उपस्थिति को अनदेखा करते हैं - यह 4.5 और 4.5.1 के बीच अंतर करता है।
वसंत

@ springy76, इसका कारण SKU मानों की उपस्थिति को संबोधित नहीं करता है, क्योंकि यह निर्धारित करने के प्रयोजनों के लिए कि फ्रेमवर्क के कौन से संस्करण स्थापित हैं, वे प्रासंगिक नहीं हैं। आपके द्वारा संदर्भित प्रश्न वास्तव में यह निर्धारित करने की कोशिश कर रहा है कि क्या ".NET 4.0.2" स्थापित है। यहां समस्या यह है कि कोई .NET 4.0.2 नहीं था, यह एक अपडेट (KB2544514) था, न कि एक फ्रेमवर्क रिलीज़ या सर्विस पैक। अधिक जानकारी के लिए MSDN ( msdn.microsoft.com/en-us/library/hh925567(v=vs.110).aspx ) पर आप इस लेख को देख सकते हैं कि कैसे अपडेट्स का पता लगाया जाए।
स्कॉट डॉर्मन

जवाबों:


365

रजिस्ट्री यह पता लगाने का आधिकारिक तरीका है कि क्या फ्रेमवर्क का एक विशिष्ट संस्करण स्थापित किया गया है।

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

आपके द्वारा खोजे जा रहे फ्रेमवर्क संस्करण के आधार पर किन रजिस्ट्री कुंजियों में बदलाव की आवश्यकता है:

फ्रेमवर्क संस्करण रजिस्ट्री कुंजी
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ .NETFramework \ Policy \ v1.0 \ 3705 
1.1 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v1.1.4322 \ Install 
2.0 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v2.0.50727 \ Install 
3.0 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.0 \ Setup \ InstallSuccess 
3.5 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.5 \ Install 
4.0 क्लाइंट प्रोफाइल HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ Client \ Install
4.0 पूर्ण प्रोफ़ाइल HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ Full \ Install

आम तौर पर आप के लिए देख रहे हैं:

"Install"=dword:00000001

.NET 1.0 को छोड़कर, जहां मान REG_SZएक संख्या ( REG_DWORD) के बजाय एक स्ट्रिंग ( ) है।

सर्विस पैक स्तर का निर्धारण करना एक समान पैटर्न का अनुसरण करता है:

फ्रेमवर्क संस्करण रजिस्ट्री कुंजी
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ Active सेटअप \ Installed घटक \ {78705f0d-e8db-4b2d-8193-982bdda15ecd} \ संस्करण 
1.0 [1] HKLM \ Software \ Microsoft \ Active सेटअप \ Installed घटक \ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} \ संस्करण 
1.1 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v1.1.4322 \ SP 
2.0 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v2.0.50727 \ SP 
3.0 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.0 \ SP 
3.5 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.5 \ SP 
4.0 क्लाइंट प्रोफ़ाइल HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ Client \ Servicing
4.0 पूर्ण प्रोफ़ाइल HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ Full \ Servicing

[१] विंडोज मीडिया सेंटर या विंडोज एक्सपी टैबलेट संस्करण

जैसा कि आप देख सकते हैं, अगर आप विंडोज मीडिया सेंटर या विंडोज एक्सपी टैबलेट संस्करण पर चल रहे हैं तो .NET 1.0 में बदलाव के लिए एसपी स्तर का निर्धारण किया जा सकता है। फिर से, .NET 1.0 एक स्ट्रिंग मान का उपयोग करता है जबकि अन्य सभी DWORD का उपयोग करते हैं।

.NET 1.0 के लिए इनमें से किसी भी कुंजी पर स्ट्रिंग मान में #, #, ####, # का प्रारूप है। अंतिम # सर्विस पैक स्तर है।

हालांकि मैंने स्पष्ट रूप से इसके लिए नहीं पूछा था, यदि आप फ्रेमवर्क की सटीक संस्करण संख्या जानना चाहते हैं तो आप इन रजिस्ट्री कुंजियों का उपयोग करेंगे:

फ्रेमवर्क संस्करण रजिस्ट्री कुंजी
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ Active सेटअप \ Installed घटक \ {78705f0d-e8db-4b2d-8193-982bdda15ecd} \ संस्करण 
1.0 [1] HKLM \ Software \ Microsoft \ Active सेटअप \ Installed घटक \ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} \ संस्करण 
1.1 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v1.1.4322 
2.0 [2] HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v2.0.50727 \ संस्करण 
2.0 [3] HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v2.0.50727 \ Increment
3.0 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.0 \ संस्करण 
3.5 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.5 \ संस्करण 
4.0 क्लाइंट प्रोफ़ाइल HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ संस्करण 
4.0 पूर्ण प्रोफ़ाइल HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ संस्करण 

[१] विंडोज मीडिया सेंटर या विंडोज एक्सपी टैबलेट संस्करण
[२] .NET 2.0 SP1
[३] .NET २.० मूल रिलीज़ (RTM)

फिर से, .NET 1.0 एक स्ट्रिंग मान का उपयोग करता है जबकि अन्य सभी DWORD का उपयोग करते हैं।

अतिरिक्त नोट्स

  • .NET 1.0 के लिए इनमें से किसी भी कुंजी पर स्ट्रिंग मान का एक प्रारूप है #,#,####,##,#,####स्ट्रिंग के भाग फ्रेमवर्क संस्करण है।

  • .NET 1.1 के लिए, हम स्वयं रजिस्ट्री कुंजी के नाम का उपयोग करते हैं, जो संस्करण संख्या का प्रतिनिधित्व करता है।

  • अंत में, यदि आप निर्भरता को देखते हैं, तो .NET 3.0 .NET 2.0 में अतिरिक्त कार्यक्षमता जोड़ता है। इसलिए .NET 2.0 और .NET 3.0 दोनों को सही ढंग से स्थापित करने के लिए स्थापित होना चाहिए, क्योंकि .NET 3.0 स्थापित है। इसी तरह, .NET 3.5 .NET 2.0 और .NET 3.0 में अतिरिक्त कार्यक्षमता जोड़ता है, इसलिए .NET 2.0, .NET 3.0 और .NET 3. सभी को सही ढंग से स्थापित करने के लिए स्थापित होने का मूल्यांकन करना चाहिए। .NET 3.5 स्थापित है।

  • .NET 4.0 CLR (CLR संस्करण 4.0) का एक नया संस्करण स्थापित करता है जो CLR 2.0 के साथ-साथ-साथ चल सकता है।

.NET 4.5 के लिए अद्यतन करें

v4.5.NET 4.5 स्थापित है, तो रजिस्ट्री में कोई कुंजी नहीं होगी । इसके बजाय आपको जांचना होगा कि क्या HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Fullकुंजी में एक मूल्य है Release। यदि यह मान मौजूद है, तो .NET 4.5 स्थापित है, अन्यथा यह नहीं है। अधिक विवरण यहां और यहां देखे जा सकते हैं


1
यह विस्टा x64 के तहत .NET 1.1 के लिए काम नहीं करता है। कोई भी v1.1.x कुंजियाँ संभावित स्थानों में से किसी में नहीं हैं। विचार?
क्रिस हाइन्स

7
.NET 4.0 की कुंजियाँ बहुत सही नहीं हैं। मैं इन कुंजियों को देख रहा हूं: HKLM \ Software \ Microsoft \ NET Framework सेटअप \ NDP \ v4 \ Client \ Install HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v4 \ पूर्ण \ Install \ v4.0 फ़ोल्डर में केवल एक कुंजी है , (डिफ़ॉल्ट) पदावनत के मान के साथ।
बेतरतीब

2
यह पोस्ट 4.5 को कवर नहीं करता है, और 4.5 स्थापित होने के बावजूद रजिस्ट्री में सूचीबद्ध नहीं है।
क्लास मेलबर्न

37
यार, क्या Microsoft में किसी ने भी -version स्विच जोड़ने के लिए नहीं सोचा था?
ग्नूचू

2
यह एक मज़ाक है। मुझे विश्वास नहीं हो रहा है कि यह गूंगा है!
एलेक्स बर्थ

17

निम्नलिखित ज्ञानकोष आलेख में इस सवाल का एक आधिकारिक Microsoft उत्तर है:

अनुच्छेद आईडी: ३१ 2008 ID ID५ - अंतिम समीक्षा: 7 नवंबर, २००vision - संशोधन: २०.१ यह कैसे तय करें कि .NET फ्रेमवर्क के कौन से संस्करण स्थापित हैं और क्या सर्विस पैक लागू किए गए हैं

दुर्भाग्य से, यह काम नहीं करता है, क्योंकि 2.0 निर्देशिका में mscorlib.dll संस्करण में 2.0 संस्करण है, और 3.0 या 3.5 निर्देशिकाओं में कोई भी mscorlib.dll संस्करण नहीं है, भले ही 3.5 SP1 स्थापित हो ... क्यों क्या आधिकारिक Microsoft उत्तर इतनी गलत सूचना होगी?


2
+1 - ऐसा प्रतीत होता है कि Microsoft ने उस पेज को अपडेट कर दिया होगा क्योंकि आप मूल रूप से उससे जुड़े थे। इसलिए ऐसा लग रहा है कि इस मामले पर सबसे अच्छे आधिकारिक स्रोतों में से एक हो सकता है।
जिपरसन 20

2
यह केवल 4.0 तक जाता है
user316117

16

फ्रेमवर्क 4 बीटा एक अलग रजिस्ट्री कुंजी को स्थापित करता है।

using System;
using System.Collections.ObjectModel;
using Microsoft.Win32;

class Program
{
    static void Main(string[] args)
    {
        foreach(Version ver in InstalledDotNetVersions())
            Console.WriteLine(ver);

        Console.ReadKey();
    }


    public static Collection<Version> InstalledDotNetVersions()
    {
        Collection<Version> versions = new Collection<Version>();
        RegistryKey NDPKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
        if (NDPKey != null)
        {
            string[] subkeys = NDPKey.GetSubKeyNames();
            foreach (string subkey in subkeys)
            {
                GetDotNetVersion(NDPKey.OpenSubKey(subkey), subkey, versions);
                GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Client"), subkey, versions);
                GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Full"), subkey, versions);
            }
        }
        return versions;
    }

    private static void GetDotNetVersion(RegistryKey parentKey, string subVersionName, Collection<Version> versions)
    {
        if (parentKey != null)
        {
            string installed = Convert.ToString(parentKey.GetValue("Install"));
            if (installed == "1")
            {
                string version = Convert.ToString(parentKey.GetValue("Version"));
                if (string.IsNullOrEmpty(version))
                {
                    if (subVersionName.StartsWith("v"))
                        version = subVersionName.Substring(1);
                    else
                        version = subVersionName;
                }

                Version ver = new Version(version);

                if (!versions.Contains(ver))
                    versions.Add(ver);
            }
        }
    }
}

1
गैर-व्यवस्थापक उपयोगकर्ताओं पर सुरक्षा अपवाद से बचने के Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true)लिए बदलें Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP")
जॉन केज

कूल, मैंने LinqPad का उपयोग किया और इसने मुझे एकदम सही परिणाम दिए! share.linqpad.net/5cjihh.linq
user917170

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

8

मैं अपने सिस्टम पर स्थापित .NET संस्करण 4.5.2 की उपस्थिति का पता लगाना चाहता था, और मुझे ASoft .NET संस्करण डिटेक्टर से बेहतर कोई समाधान नहीं मिला ।

इस टूल के स्नैपशॉट विभिन्न .NET संस्करण दिखा रहे हैं:

इस टूल के स्नैपशॉट विभिन्न .NET संस्करण दिखा रहे हैं


7

के उपकुंजियों की गणना करें HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP। प्रत्येक उपकुंजी .NET संस्करण है। Install=1यदि मशीन पर यह मौजूद है, तो इसका मूल्य होना चाहिए , एक एसपी मूल्य जो सर्विस पैक और एक MSI=1मूल्य दिखाता है यदि यह एमएसआई का उपयोग करके स्थापित किया गया था। (Windows Vista पर .NET 2.0 के पास उदाहरण के लिए अंतिम नहीं है, क्योंकि यह OS का हिस्सा है।)


मुझे अपनी मशीन (XP प्रो) पर यह कुंजी नहीं मिली, लेकिन मेरे पास यह था: HKLM \ SOFTWARE \ Microsoft \ .NETFramework। हालाँकि, आपके द्वारा वर्णित विभिन्न मूल्य मेरे लिए मौजूद नहीं हैं।
चार्ली

.NET 1.1 या बाद में स्थापित होने पर आपके पास यह कुंजी होनी चाहिए। आपके द्वारा बताई गई कुंजी केवल .NET 1.0 के लिए उपयोग की गई थी।
स्कॉट डोरमैन

reg क्वेरी "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP"
उत्साह

5

64-बिट OS के लिए, पथ होगा:

HKEY_LOCAL_MACHINE\SOFTWARE\wow6432Node\Microsoft\NET Framework Setup\NDP\

10
यह केवल "कुछ हद तक" सच है। विंडोज़ के 64-बिट संस्करणों में रजिस्ट्री को 32-बिट और 64-बिट कुंजी में विभाजित किया गया है (32-बिट कुंजी में से कई में 64-बिट कुंजी के समान नाम है)। Wow6432Nodeरजिस्ट्री कुंजी WOW64 रजिस्ट्री परावर्तक, का हिस्सा है जो दर्पण 64-बिट और 32-बिट रजिस्ट्री विचारों के बीच कुछ कुंजी और मूल्यों। इस कुंजी को सीधे एक्सेस करने की कोई आवश्यकता नहीं होनी चाहिए क्योंकि रजिस्ट्री स्वचालित रूप से रीडायरेक्शन और मिररिंग को संभालती है।
स्कॉट डोरमैन

5

.NET 4.5.1 के लिए अपडेट करें

अब जब .NET 4.5.1 उपलब्ध है, तो रजिस्ट्री में जारी की जाने वाली कुंजी का वास्तविक मूल्य चेक किया जाना चाहिए, न कि इसके अस्तित्व की। 378758 के मान का अर्थ है कि .NET फ्रेमवर्क 4.5.1 स्थापित है। हालाँकि, जैसा कि यहाँ बताया गया है कि यह मान विंडोज 8.1 पर 378675 है।


5

एक GUI टूल उपलब्ध है, ASoft .NET वर्जन डिटेक्टर , जो हमेशा अत्यधिक विश्वसनीय साबित हुआ है। यह कमांड लाइन पर XML आउटपुट के फ़ाइल नाम को निर्दिष्ट करके XML फाइलें बना सकता है।

आप स्वचालन के लिए इसका इस्तेमाल कर सकते हैं। यह एक छोटा कार्यक्रम है, जो गैर-नेट पर निर्भर भाषा में लिखा गया है और इसे इंस्टालेशन की आवश्यकता नहीं है।


4

मुझे यह पता लगाने की जरूरत थी कि मेरे कंप्यूटर पर .NET फ्रेमवर्क का कौन सा संस्करण है, और मैंने जो भी किया वह नियंत्रण कक्ष में गया और "प्रोग्राम अनइंस्टॉल" विकल्प का चयन करें। उसके बाद, मैंने कार्यक्रमों को नाम से सॉर्ट किया, और Microsoft .NET फ्रेमवर्क 4 क्लाइंट प्रोफाइल पाया।


1
धन्यवाद - हर दूसरे "समाधान" मैंने कोशिश की त्रुटिपूर्ण थी और काम नहीं करेगा। इसने किया।
user20493

मैं इस जानकारी की तलाश में आया था कि यह प्रोग्राम अनइंस्टॉल के तहत सामान पूरी तरह से अविश्वसनीय है, कम से कम जब यह .NET फ्रेमवर्क की बात आती है।
तोबेनब

3

यहाँ स्थापित .NET फ्रेमवर्क संस्करण प्राप्त करने के लिए एक PowerShell स्क्रिप्ट है

function Get-KeyPropertyValue($key, $property)
{
    if($key.Property -contains $property)
    {
        Get-ItemProperty $key.PSPath -name $property | select -expand $property
    }
}

function Get-VersionName($key)
{
   $name = Get-KeyPropertyValue $key Version
   $sp = Get-KeyPropertyValue $key SP
   $install = Get-KeyPropertyValue $key Install
   if($sp)
   {
        "$($_.PSChildName) $name SP $sp"
   }
   else{
    "$($_.PSChildName) $name"
   }
}

function Get-FrameworkVersion{
   dir "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\" |? {$_.PSChildName -like "v*"} |%{
    if( $_.Property -contains "Version")
    {
        Get-VersionName $_
    }
    else{
        $parent = $_
        Get-ChildItem $_.PSPath |%{
            $versionName = Get-VersionName $_
            "$($parent.PSChildName) $versionName"
            }
        }
    }
}


$v4Directory = "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
if(Test-Path $v4Directory)
{
    $v4 = Get-Item $v4Directory
    $version = Get-KeyPropertyValue $v4 Release
    switch($version){
        378389 {".NET Framework 4.5"; break;}
        378675 {".NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2"; break;}
        378758 {".NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2"; break;}
        379893 {".NET Framework 4.5.2"; break;}
        { 393295, 393297 -contains $_} {".NET Framework 4.6"; break;}
        { 394254, 394271 -contains $_} {".NET Framework 4.6.1"; break;}
        { 394802, 394806 -contains $_} {".NET Framework 4.6.2"; break; }
    }
}

यह कैसे: किसके आधार पर निर्धारित किया गया था। कौन सा .NET फ्रेमवर्क संस्करण स्थापित किए गए हैं । स्थापित .NET फ्रेमवर्क संस्करणों के बारे में जानकारी प्राप्त करने के लिए कृपया Get-FrameworkVersion () फ़ंक्शन का उपयोग करें।


2

SignumFramework (जो आप स्टैंड-अलोन का उपयोग कर सकते हैं) से Signum.Utilities लाइब्रेरी का उपयोग करते हुए , आप इसे अच्छी तरह से और अपने आप से रजिस्ट्री से निपटने के बिना प्राप्त कर सकते हैं:

AboutTools.FrameworkVersions().ToConsole();
//Writes in my machine:
//v2.0.50727 SP2
//v3.0 SP2
//v3.5 SP1

2
इस विधि के लिए कोड को देखते हुए, यह बहुत पूर्ण नहीं है क्योंकि यह रजिस्ट्री कुंजी का उपयोग करता है और .NET 1.0 को पूरी तरह से याद करेगा और .NET 2.0 (RTM) और .NET 2.0 SP1 के बीच अंतर नहीं करेगा। यह फ्रेमवर्क संस्करणों के बीच निर्भरता को भी ध्यान में नहीं रखता है।
स्कॉट डोरमैन

2
एक अच्छा समाधान नहीं। जब आप कोड की लगभग 3 पंक्तियों में स्वयं वही कार्य कर सकते हैं, तो केवल .NET संस्करण प्राप्त करने के लिए पूरी लाइब्रेरी डाउनलोड करने का कोई अच्छा कारण नहीं है। एक प्रोग्रामर के रूप में, आप "रजिस्ट्री के साथ खुद को निपटाने" में सक्षम हो सकते हैं।
TheSmurf

3
@DannySmurf मैं सहमत नहीं हूँ। जब .NET 3.0 को पेश किया गया था तो MS को .NET API में लिपटना चाहिए था (जैसे ही हमारे पास एक ही CLR पर FX की एक परत थी)। मैं बल्कि अपने आवेदन में एक उपयोगिता पुस्तकालय का उपयोग करना चाहता हूं, तब जब 4.1, 6.1, 7.100 आता है, तो मैं बस पुस्तकालय को अद्यतन कर सकता हूं और एक विन्यास प्रविष्टि जिसके लिए .NET की ऐप की आवश्यकता होती है। यदि पुस्तकालयों में से कोई भी काम नहीं करता है, तो बेशक यह तर्क पानी नहीं रखता है।
यजॉर्ग

1

देखें कि कैसे: निर्धारित करें कि कौन से .NET फ्रेमवर्क संस्करण स्थापित हैं (MSDN)।

MSDN एक फ़ंक्शन उदाहरण का प्रस्ताव करता है जो संस्करण 1-4 के लिए काम करता है। लेख के अनुसार, विधि आउटपुट है:

v2.0.50727  2.0.50727.4016  SP2
v3.0  3.0.30729.4037  SP2
v3.5  3.5.30729.01  SP1
v4
  Client  4.0.30319
  Full  4.0.30319

ध्यान दें कि "संस्करण 4.5 और बाद में" के लिए एक और फ़ंक्शन है।


1

विंडोज 7 में (यह विंडोज 8 के लिए भी काम करना चाहिए, लेकिन मैंने इसका परीक्षण नहीं किया है):

कमांड प्रॉम्प्ट पर जाएं

कमांड प्रॉम्प्ट पर जाने के लिए चरण:

  1. स्टार्ट मेनू पर क्लिक करें
  2. खोज बॉक्स में, "cmd" (बिना उद्धरण के) टाइप करें
  3. Cmd.exe खोलें

Cmd में, यह कमांड टाइप करें

wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version

यह स्थापित नेट फ्रेमवर्क का नवीनतम संस्करण देता है।

एक ही के लिए रेमंड.सीसी Utilties भी कोशिश कर सकते हैं ।


1
cmdमुझे में उस लाइन चल रहा है ERROR: Description = Invalid namespace
मेमोरियल

मैं भी मिलता हूंERROR: Description = Invalid namespace
पीटर

यह आदेश मुझे त्रुटि देता है! (विंडोज़ 7 टर्मिनल से निष्पादित)
स्मृति

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