yotiky Tech Blog

とあるエンジニアの備忘録

LINQPad - LINQPad 5 で使われる .NET Framework のバージョンを確認する

LINQPadはインストールされている最新 .NET Framework 4.xを対象としている。

以下のフォーラムで最新のバージョンが何であるか確認する linq ファイルが共有されている。

forum.linqpad.net

以下コードの抜粋。

void Main()
{
    GetFWVersion().Dump();
}

static Version _version;
public static Version GetFWVersion ()
{
    if (_version != null) return _version;

    if (typeof (int).GetType ().BaseType.Name == "Type") return _version = new Version (4, 0);

    using (var key = Registry.LocalMachine.OpenSubKey (@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"))
    {
        int? versionKey = key == null ? null : key.GetValue ("Release") as int?;
        if (versionKey >= 461808) return _version = new Version (4, 7, 2);
        if (versionKey >= 461308) return _version = new Version (4, 7, 1);
        if (versionKey >= 460798) return _version = new Version (4, 7);
        if (versionKey >= 394802) return _version = new Version (4, 6, 2);
        if (versionKey >= 394254) return _version = new Version (4, 6, 1);
        if (versionKey >= 393273) return _version = new Version (4, 6);
        if (versionKey >= 379893) return _version = new Version (4, 5, 2);
        if (versionKey >= 378675) return _version = new Version (4, 5, 1);
    }
    return _version = new Version (4, 5);
}