Как настроить версию .NET Framework?

Как я могу получить версию .NET Framework, на которой я настроен таргетинг, а не версию платформы .NET, в которой в настоящее время работает приложение?

Например, если приложение нацелено на .NET Framework 4.5, мне нужно знать, что я нацелен на .NET Framework 4.5.

Например, проверка System.Environment.Version:

  • при настройке .NET Framework 4: 4.0.30319.18502
  • при настройке .NET Framework 4.5: 4.0.30319.18502

Так что это не сработает.

Реальная цель - попытаться обойти отсутствие компилятора в .NET.

Ответ 1

Этот простой

var targetFw = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false);

Ответ 2

Что мешает вам использовать обычный /define?

csc/define: NET45/optimize/out:MyProgram.exe *.cs

с

using System;
public class Test 
{
    public static void Main() 
    {
        #if (NET45) 
            Console.WriteLine("NET45 targeted");
        #else
            Console.WriteLine("NET45 not targeted");
        #endif
    }
}