Ответ 1
Этот простой
var targetFw = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false);
Как я могу получить версию .NET Framework, на которой я настроен таргетинг, а не версию платформы .NET, в которой в настоящее время работает приложение?
Например, если приложение нацелено на .NET Framework 4.5, мне нужно знать, что я нацелен на .NET Framework 4.5.
Например, проверка System.Environment.Version
:
4.0.30319.18502
4.0.30319.18502
Так что это не сработает.
Реальная цель - попытаться обойти отсутствие компилятора в .NET.
Этот простой
var targetFw = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false);
Что мешает вам использовать обычный /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
}
}