e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
176 lines
5.2 KiB
C#
176 lines
5.2 KiB
C#
// ==++==
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// ==--==
|
|
|
|
using System.Runtime;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace System
|
|
{
|
|
[FriendAccessAllowed]
|
|
internal static class CompatibilitySwitches
|
|
{
|
|
private static bool s_AreSwitchesSet;
|
|
#if FEATURE_CORECLR && !FEATURE_CORESYSTEM
|
|
private static bool s_isAppEarlierThanSilverlight4;
|
|
#endif //FEATURE_CORECLR && !FEATURE_CORESYSTEM
|
|
|
|
#if FEATURE_LEGACYNETCF
|
|
private static bool s_isAppEarlierThanWindowsPhone8;
|
|
private static bool s_isAppEarlierThanWindowsPhoneMango;
|
|
#endif //FEATURE_LEGACYNETCF
|
|
|
|
#if FEATURE_CORECLR
|
|
private static bool s_isAppSilverlight81; // The app targets SL8.1 version
|
|
private static bool s_useLatestBehaviorWhenTFMNotSpecified; // Which behavior to use when the TFM is not specified.
|
|
#endif //FEATURE_CORECLR
|
|
|
|
#if !FEATURE_CORECLR
|
|
private static bool s_isNetFx40TimeSpanLegacyFormatMode;
|
|
private static bool s_isNetFx40LegacySecurityPolicy;
|
|
private static bool s_isNetFx45LegacyManagedDeflateStream;
|
|
#endif //!FEATURE_CORECLR
|
|
|
|
public static bool IsCompatibilityBehaviorDefined
|
|
{
|
|
get
|
|
{
|
|
return s_AreSwitchesSet;
|
|
}
|
|
}
|
|
|
|
private static bool IsCompatibilitySwitchSet(string compatibilitySwitch)
|
|
{
|
|
bool? result = AppDomain.CurrentDomain.IsCompatibilitySwitchSet(compatibilitySwitch);
|
|
return (result.HasValue && result.Value);
|
|
}
|
|
|
|
internal static void InitializeSwitches()
|
|
{
|
|
#if FEATURE_CORECLR && !FEATURE_CORESYSTEM
|
|
s_isAppEarlierThanSilverlight4 = IsCompatibilitySwitchSet("APP_EARLIER_THAN_SL4.0");
|
|
#endif //FEATURE_CORECLR && !FEATURE_CORESYSTEM
|
|
|
|
|
|
#if FEATURE_CORECLR
|
|
s_isAppSilverlight81 = IsCompatibilitySwitchSet("WindowsPhone_5.1.0.0");
|
|
s_useLatestBehaviorWhenTFMNotSpecified = IsCompatibilitySwitchSet("UseLatestBehaviorWhenTFMMissing");
|
|
#endif //FEATURE_CORECLR
|
|
|
|
#if FEATURE_LEGACYNETCF
|
|
s_isAppEarlierThanWindowsPhoneMango = IsCompatibilitySwitchSet("WindowsPhone_3.7.0.0");
|
|
s_isAppEarlierThanWindowsPhone8 = s_isAppEarlierThanWindowsPhoneMango ||
|
|
IsCompatibilitySwitchSet("WindowsPhone_3.8.0.0");
|
|
|
|
#endif //FEATURE_LEGACYNETCF
|
|
|
|
#if !FEATURE_CORECLR
|
|
s_isNetFx40TimeSpanLegacyFormatMode = IsCompatibilitySwitchSet("NetFx40_TimeSpanLegacyFormatMode");
|
|
s_isNetFx40LegacySecurityPolicy = IsCompatibilitySwitchSet("NetFx40_LegacySecurityPolicy");
|
|
s_isNetFx45LegacyManagedDeflateStream = IsCompatibilitySwitchSet("NetFx45_LegacyManagedDeflateStream");
|
|
#endif //FEATURE_CORECLR
|
|
|
|
s_AreSwitchesSet = true;
|
|
}
|
|
|
|
public static bool IsAppEarlierThanSilverlight4
|
|
{
|
|
get
|
|
{
|
|
#if FEATURE_CORECLR && !FEATURE_CORESYSTEM
|
|
return s_isAppEarlierThanSilverlight4;
|
|
#else
|
|
return false;
|
|
#endif //FEATURE_CORECLR && !FEATURE_CORESYSTEM
|
|
}
|
|
}
|
|
|
|
#if FEATURE_CORECLR
|
|
/// <summary>
|
|
/// This property returns whether the app is hosted under SL 8.1 version
|
|
/// </summary>
|
|
internal static bool IsAppSilverlight81
|
|
{
|
|
get
|
|
{
|
|
// PS - Do not use this property for adding quirks. Please use the exposed properties of BinaryCompatiblity class instead.
|
|
return s_isAppSilverlight81;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// This property returns whether to give the latest behavior when the TFM is missing
|
|
/// </summary>
|
|
internal static bool UseLatestBehaviorWhenTFMNotSpecified
|
|
{
|
|
get
|
|
{
|
|
return s_useLatestBehaviorWhenTFMNotSpecified;
|
|
}
|
|
}
|
|
#endif //FEATURE_CORECLR
|
|
|
|
public static bool IsAppEarlierThanWindowsPhone8
|
|
{
|
|
get
|
|
{
|
|
#if FEATURE_LEGACYNETCF
|
|
return s_isAppEarlierThanWindowsPhone8;
|
|
#else
|
|
return false;
|
|
#endif //FEATURE_LEGACYNETCF
|
|
}
|
|
}
|
|
|
|
public static bool IsAppEarlierThanWindowsPhoneMango
|
|
{
|
|
get
|
|
{
|
|
#if FEATURE_LEGACYNETCF
|
|
return s_isAppEarlierThanWindowsPhoneMango;
|
|
#else
|
|
return false;
|
|
#endif //FEATURE_LEGACYNETCF
|
|
}
|
|
}
|
|
|
|
public static bool IsNetFx40TimeSpanLegacyFormatMode
|
|
{
|
|
get
|
|
{
|
|
#if !FEATURE_CORECLR
|
|
return s_isNetFx40TimeSpanLegacyFormatMode;
|
|
#else
|
|
return false;
|
|
#endif //!FEATURE_CORECLR
|
|
}
|
|
}
|
|
|
|
public static bool IsNetFx40LegacySecurityPolicy
|
|
{
|
|
get
|
|
{
|
|
#if !FEATURE_CORECLR
|
|
return s_isNetFx40LegacySecurityPolicy;
|
|
#else
|
|
return false;
|
|
#endif //!FEATURE_CORECLR
|
|
}
|
|
}
|
|
|
|
public static bool IsNetFx45LegacyManagedDeflateStream
|
|
{
|
|
get
|
|
{
|
|
#if !FEATURE_CORECLR
|
|
return s_isNetFx45LegacyManagedDeflateStream;
|
|
#else
|
|
return false;
|
|
#endif //!FEATURE_CORECLR
|
|
}
|
|
}
|
|
}
|
|
}
|