2017-08-17 20 views
6

, çıkış: alan tespit .net çekirdek 2.0

Hello World from .NET Core 4.6.00001.0 

.net çekirdek 2.0 algılamak için herhangi bir şekilde var:

Console.WriteLine("Hello World from "+ System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription); 

oldukça beklenmedik değeri veya daha sonra, 2.0 öncesi bir net çekirdek platformuna karşı programatik olarak mı? Muhtemelen çoğu durumda bunu yapmamalısınız. Ama bunu yapman gereken garip durumlarda, bunu nasıl yapacaksın?

cevap

5

Sizin için önceden tanımlanmış önişlemci sembollerini kullanabilirsiniz. Örneğin:

var isNetCore2 = false; 

#if NETCOREAPP2_0 
    isNetCore2 = true; 
#endif 

Console.WriteLine($"Is this .Net Core 2: {isNetCore2}"); 
+0

ben hem .net çekirdek 1.0 yüklenir ve 2.0 doğru olur bir Netstandard montaj olabilir üzerinde test? Bu durumda, yukarıdakiler optimal değildir. –

2

Bunu yapmanın herhangi zarif bir şekilde bulamadık, ama sen gerçekten yayınladığınız hangi sürümünü bilmeniz gerekiyorsa, böyle dotnet --version yürütebilirsiniz:

var psi = new ProcessStartInfo("dotnet", "--version") 
{ 
    RedirectStandardOutput = true 
}; 

var process = Process.Start(psi); 
process.WaitForExit(); 

Console.Write(process.StandardOutput.ReadToEnd()); // writes 2.0.0 
+0

Bu, beklediğiniz aynı sürümü vermeyebilir. Sistem, çalışma zamanının birden çok sürümünü tutabilir. – DavidG

2

Mevcut .NET sürümünü almak için aşağıdaki kodu deneyebilirsiniz.

NET Çekirdek 1,1 & 2,0

public static string GetNetCoreVersion() 
{ 
    var assembly = typeof(System.Runtime.GCSettings).GetTypeInfo().Assembly; 
    var assemblyPath = assembly.CodeBase.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); 
    int netCoreAppIndex = Array.IndexOf(assemblyPath, "Microsoft.NETCore.App"); 
    if (netCoreAppIndex > 0 && netCoreAppIndex < assemblyPath.Length - 2) 
    return assemblyPath[netCoreAppIndex + 1]; 
    return null; 
} 

https://github.com/dotnet/BenchmarkDotNet/issues/448

+0

Hata durumunda null yerine "Unknown" döndürmek daha kolay olabilir. –

İlgili konular