Как определить, что моя библиотека работает под .Net Core 3 Desktop Package - PullRequest
0 голосов
/ 07 декабря 2018

Вот как я могу определить это сейчас (этот подход основан на внутренних изменениях в классах Desktop Package):

public static class FrameworkVersions {
    static readonly bool f_nativeMatrix_Exists;
    static FrameworkVersions() {
        f_nativeMatrix_Exists= typeof(System.Drawing.Drawing2DMatrix)
            .GetField("nativeMatrix", BindingFlags.Instance | BindingFlags.NonPublic) != null;
    }
    public static bool IsNetCore3DesktopPackage {
        get{ return !f_nativeMatrix_Exists; }
    }
}

Существует ли лучший способ?Пожалуйста, поделитесь своим опытом.

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете положиться на RuntimeInformation.FrameworkDescription, как то, что используется в .NET Core тестах :

//using System.Runtime.InteropServices;
bool IsFullFramework = RuntimeInformation.FrameworkDescription.StartsWith(".NET Framework",
    StringComparison.OrdinalIgnoreCase);
bool IsNetNative = RuntimeInformation.FrameworkDescription.StartsWith(".NET Native",
    StringComparison.OrdinalIgnoreCase);
bool IsNetCore = RuntimeInformation.FrameworkDescription.StartsWith(".NET Core", 
    StringComparison.OrdinalIgnoreCase);

Вы также можете определить работающую версию фреймворка с помощьюНахождение TargetFrameworkAttribute сборки (как это сообщение в блоге от Рика Штраля):

//using System.Reflection;
//using System.Runtime.Versioning;
var framework = Assembly.GetEntryAssembly()?
    .GetCustomAttribute<TargetFrameworkAttribute>()?
    .FrameworkName;
MessageBox.Show(framework);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...