Как получить версию платформы .NET, используемую приложением

Я упомянул вопрос о переполнении стека Есть ли простой способ проверить версию .NET Framework?. Но предложенные там предложения не сработали для достижения следующей цели.

Как определить версию .NET, используемую консольным приложением С#?

Окружающая среда:

  • Visual Studio 2010
  • .NET Framework: 3.5 (см. прилагаемый скриншот)

CODE

using System;
using System.Globalization;
using Microsoft.Win32;
namespace TESTConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            //.NET version: Approach 1
            RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
            string[] version_names = installed_versions.GetSubKeyNames();
            double latestFramework = Convert.ToDouble(version_names[version_names.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture);
            int SP = Convert.ToInt32(installed_versions.OpenSubKey(version_names[version_names.Length - 1]).GetValue("SP", 0));
            Console.WriteLine(latestFramework);

            //Approach 2
            string versionval = Environment.Version.ToString();
            Console.WriteLine(versionval);

            //Approach 3
            string systemVersionVal = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion().ToString();
            Console.WriteLine(systemVersionVal);

            Console.ReadLine();
        }
    }
}

Выход

Enter image description here

Настройка VERSION

Enter image description here

Ответ 1

Попробуйте это (он будет работать для версий >= 3.5)

string version = System.Reflection.Assembly
                     .GetExecutingAssembly()
                     .GetReferencedAssemblies()
                     .Where(x => x.Name == "System.Core").First().Version.ToString();

P.S. Глупый ответ из моих старых лет, проигнорируйте это, пожалуйста (я не могу удалить это как принятый ответ)

Ответ 2

Второй и третий подходы - это CLR version numbers.

.NET Framework 2 и .NET Framework 3.5 используют CLR 2.0.

И нет CLR 3.0 или 3.5.