19

如何获取我所针对的 .NET Framework 版本,而不是应用程序当前运行的 .NET Framework 版本?

例如,如果应用程序以 .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 中缺少编译器定义的问题

4

2 回答 2

30

这很简单 - 检查TargetFrameworkAttribute

var targetFrameworkAttribute = Assembly.GetExecutingAssembly()
    .GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false)
    .SingleOrDefault();
于 2013-09-30T14:41:50.283 回答
5

是什么阻止您使用普通的/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
    }
}
于 2013-09-30T14:51:05.587 回答