a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
98 lines
2.7 KiB
C#
98 lines
2.7 KiB
C#
// ****************************************************************
|
|
// This is free software licensed under the NUnit license. You
|
|
// may obtain a copy of the license as well as information regarding
|
|
// copyright ownership at http://nunit.org/?p=license&r=2.4.
|
|
// ****************************************************************
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
|
|
namespace NUnit.Core
|
|
{
|
|
/// <summary>
|
|
/// Enumeration identifying a common language
|
|
/// runtime implementation.
|
|
/// </summary>
|
|
public enum RuntimeType
|
|
{
|
|
/// <summary>Microsoft .NET Framework</summary>
|
|
Net,
|
|
/// <summary>Microsoft .NET Compact Framework</summary>
|
|
NetCF,
|
|
/// <summary>Microsoft Shared Source CLI</summary>
|
|
SSCLI,
|
|
/// <summary>Mono</summary>
|
|
Mono
|
|
}
|
|
|
|
/// <summary>
|
|
/// RuntimeFramework represents a particular version
|
|
/// of a common language runtime implementation.
|
|
/// </summary>
|
|
public sealed class RuntimeFramework
|
|
{
|
|
private RuntimeType runtime;
|
|
private Version version;
|
|
|
|
/// <summary>
|
|
/// Constructor
|
|
/// </summary>
|
|
/// <param name="runtime">The runtime type of the framework</param>
|
|
/// <param name="version">The version of the framework</param>
|
|
public RuntimeFramework( RuntimeType runtime, Version version )
|
|
{
|
|
this.runtime = runtime;
|
|
this.version = version;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Static method to return a RuntimeFramework object
|
|
/// for the frameowrk that is currently in use.
|
|
/// </summary>
|
|
public static RuntimeFramework CurrentFramework
|
|
{
|
|
get
|
|
{
|
|
RuntimeType runtime = Type.GetType( "Mono.Runtime", false ) != null
|
|
? RuntimeType.Mono : RuntimeType.Net;
|
|
|
|
return new RuntimeFramework( runtime, Environment.Version );
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// The type of this runtime framework
|
|
/// </summary>
|
|
public RuntimeType Runtime
|
|
{
|
|
get { return runtime; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// The version of this runtime framework
|
|
/// </summary>
|
|
public Version Version
|
|
{
|
|
get { return version; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a display string for the particular framework version
|
|
/// </summary>
|
|
/// <returns>A string used to display the framework in use</returns>
|
|
public string GetDisplayName()
|
|
{
|
|
if ( runtime == RuntimeType.Mono )
|
|
{
|
|
Type monoRuntimeType = Type.GetType( "Mono.Runtime", false );
|
|
MethodInfo getDisplayNameMethod = monoRuntimeType.GetMethod(
|
|
"GetDisplayName", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.ExactBinding );
|
|
if ( getDisplayNameMethod != null )
|
|
return (string)getDisplayNameMethod.Invoke( null, new object[0] );
|
|
}
|
|
|
|
return runtime.ToString() + " " + Version.ToString();
|
|
}
|
|
}
|
|
}
|