63 lines
2.4 KiB
C#
63 lines
2.4 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace Microsoft.Extensions.PlatformAbstractions
|
|||
|
{
|
|||
|
// This is to support some legacy stuff.
|
|||
|
// dnu restore (and thus dotnet restore) always uses win7-x64 as the Windows restore target,
|
|||
|
// so, when picking targets out of the lock file, we need to do version fallback since the
|
|||
|
// active RID might be higher than the RID in the lock file.
|
|||
|
//
|
|||
|
// We should clean this up. Filed #619 to track.
|
|||
|
public static class RuntimeEnvironmentRidExtensions
|
|||
|
{
|
|||
|
// Gets the identfier that is used for restore by default (this is different from the actual RID, but only on Windows)
|
|||
|
public static string GetLegacyRestoreRuntimeIdentifier(this IRuntimeEnvironment env)
|
|||
|
{
|
|||
|
if (env.OperatingSystemPlatform != Platform.Windows)
|
|||
|
{
|
|||
|
return env.GetRuntimeIdentifier();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
var arch = env.RuntimeArchitecture.ToLowerInvariant();
|
|||
|
return "win7-" + arch;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static IEnumerable<string> GetAllCandidateRuntimeIdentifiers(this IRuntimeEnvironment env)
|
|||
|
{
|
|||
|
if (env.OperatingSystemPlatform != Platform.Windows)
|
|||
|
{
|
|||
|
yield return env.GetRuntimeIdentifier();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
var arch = env.RuntimeArchitecture.ToLowerInvariant();
|
|||
|
if (env.OperatingSystemVersion.StartsWith("6.1", StringComparison.Ordinal))
|
|||
|
{
|
|||
|
yield return "win7-" + arch;
|
|||
|
}
|
|||
|
else if (env.OperatingSystemVersion.StartsWith("6.2", StringComparison.Ordinal))
|
|||
|
{
|
|||
|
yield return "win8-" + arch;
|
|||
|
yield return "win7-" + arch;
|
|||
|
}
|
|||
|
else if (env.OperatingSystemVersion.StartsWith("6.3", StringComparison.Ordinal))
|
|||
|
{
|
|||
|
yield return "win81-" + arch;
|
|||
|
yield return "win8-" + arch;
|
|||
|
yield return "win7-" + arch;
|
|||
|
}
|
|||
|
else if (env.OperatingSystemVersion.StartsWith("10.0", StringComparison.Ordinal))
|
|||
|
{
|
|||
|
yield return "win10-" + arch;
|
|||
|
yield return "win81-" + arch;
|
|||
|
yield return "win8-" + arch;
|
|||
|
yield return "win7-" + arch;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|