如何定位.NET Framework的版本?

Ian*_*oyd 16 .net c#

我如何获得我所针对的.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中缺少编译器定义的问题.

Sri*_*vel 22

这很简单 - 检查TargetFrameworkAttribute:

var targetFrameworkAttribute = Assembly.GetExecutingAssembly()
    .GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false)
    .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)


Rob*_*vey 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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @IanBoyd也许你应该解释一下你当前的用例(我的意思是,谁拥有/编译代码,为什么你需要获得框架版本等等)因为现在它不是很清楚你是否正在寻找一个编译时或运行时解决方案. (2认同)