2011-02-23 30 views
6

Bir C# uygulamasının kendisinden, dotnet'in uygulama tarafından hangi sürümünün kullanıldığını nasıl kontrol edebilirim?dotnet sürümümü belirle

+0

Uygulamanın gerektirdiği en küçük sürümü mi kastediyorsunuz? (Proje dosyasında TargetFrameworkVersion attr) –

+0

Aslında geçerli uygulama çerçevesinin yoluna ihtiyacım var. Uygulamamın mevcut sürümden bazı exe yürütmesi gerekiyor. Yani, eğer uygulamam 2.0 kullanıyorsa, .net 2.0 klasöründen exe seçecek ve eğer 4 kullanıyorsanız, .net 4.0 klasöründen exe seçecektir. – hungryMind

cevap

12

Environment.Version kullanın - bu, uygulamayı çalıştıran .NET'in tam sürümünü verir.

Ortak dil çalışma zamanının büyük, küçük, derleme ve düzeltme sayılarını açıklayan bir Sürüm nesnesini alır.


, çerçevenin hangi sürümünü yüklü öğrenmek this SO soru ve cevapları görmek için. Bir ceviz kabuğunda, kayıt defterine girmeniz gerekecektir.

+3

3.5, 3.0 ve 2.0 arasında ayrım yapabilir mi? (çalışma zamanı aynı, 2.0.something) – xanatos

+0

@xanatos - Hayır, yapamaz. Çalışma zamanı sürümünü döndürecektir. Neyin yüklü olduğunu bilmeniz gerekiyorsa, bkz. [This] (http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed) So soru ve cevaplar. – Oded

6

Sen kullanabilirsiniz:

Environment.Version 

.NET çalışma zamanı sürüm numarasını almak için.

0

bir konsol uygulaması bu sınıf eklemek oluşturma ve bunu

Visual Studio'da
using Microsoft.Win32; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 

    namespace ConsoleApplication2 
    { 
     public class GetDotNetVersion 
     { 
      public static void Get45PlusFromRegistry() 
    { 
     const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; 
     using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)) 
     { 
      if (ndpKey != null && ndpKey.GetValue("Release") != null) 
      { 
       Console.WriteLine(".NET Framework Version: " + CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))); 
      } 
      else 
      { 
       Console.WriteLine(".NET Framework Version 4.5 or later is not detected."); 
      } 
     } 
    } 

    // Checking the version using >= will enable forward compatibility. 
    private static string CheckFor45PlusVersion(int releaseKey) 
    { 
     if (releaseKey >= 394802) 
      return "4.6.2 or later"; 
     if (releaseKey >= 394254) 
     { 
      return "4.6.1"; 
     } 
     if (releaseKey >= 393295) 
     { 
      return "4.6"; 
     } 
     if ((releaseKey >= 379893)) 
     { 
      return "4.5.2"; 
     } 
     if ((releaseKey >= 378675)) 
     { 
      return "4.5.1"; 
     } 
     if ((releaseKey >= 378389)) 
     { 
      return "4.5"; 
     } 
     // This code should never execute. 
     // that 4.5 or later is installed. 
     return "No 4.5 or later version detected"; 
    } 
} 
// Calling the GetDotNetVersion.Get45PlusFromRegistry method produces 
// output like the following: 
//  .NET Framework Version: 4.6.1 
} 
+0

Bu sorunun, mevcut sorunu düzeltmede OP'ye nasıl yardımcı olduğuyla ilgili bir açıklama ekleyin –

0

, > Nutget Paketi Yönetimi-> Paket Yöneticisi Konsolu Tip dotnet yılında version Araçlar- gitmek koşmak Ve işte gidiyorsun!