[Mono-list] Determining the platform at compile and run time

A Rafael D Teixeira rafaelteixeirabr@hotmail.com
Thu, 30 Oct 2003 22:34:28 -0200

Here is a small twist, save it as Mono.Environment.cs and compile as a 
library to use or as an executable to just test:

// How can I tell dynamically what platform my code is running on?
// This is one possible approach, contributed by Aleksey Demakov 
// And encapsulated by Rafael Teixeira (rafaelteixeirabr@hotmail.com)

using System;

namespace Mono {

	public enum RunningPlatform { MonoOnUnix, MonoOnWin32, DotNet };

	public class Environment {

		public static RunningPlatform RunningPlatform {
			get {
				Type enumType = typeof(PlatformID);

				if (Enum.IsDefined (enumType, "Unix")) {
				    if (System.Environment.OSVersion.Platform == (PlatformID) 
Enum.Parse(enumType, "Unix"))
						return RunningPlatform.MonoOnUnix;
						return RunningPlatform.MonoOnWin32;
				return RunningPlatform.DotNet;

		public static void Main(String[] parameters) {
			Console.WriteLine("Running in " + 



on my RedHat9, obviously as a program it prints:

[rafael@redhat9 desktop]$ mcs Mono.Environment.cs
Compilation succeeded
[rafael@redhat9 desktop]$ mono Mono.Environment.exe
Running in MonoOnUnix

best regards,

Rafael Teixeira
Brazilian Polymath
Mono Hacker since 16 Jul 2001
English Blog: http://monoblog.blogspot.com/
Brazilian Portuguese Blog: http://monoblog.weblogger.terra.com.br/

MSN Messenger: instale grátis e converse com seus amigos.