[Mono-devel-list] Determine the name and/or kind ofCLI runtime environment
Ben Maurer
bmaurer at ximian.com
Tue May 31 09:57:43 EDT 2005
On Tue, 2005-05-31 at 13:31 +0200, Kornél Pál wrote:
> >From: "Ben Maurer"
> > The name of the runtime alone isn't that useful. You'd probably want the
> > version of Mono as well.
>
> You are right.:)
>
> > Probably the best way to do this is to test if `basedir typeof
> > (object).Assembly.Location`/mcs.exe is there (using c# + bash :-), and
> > if it is to execute that with --version. (I guess you need to test for
> > gmcs.exe too, since that is what will be there for 2.0...)
>
> As I noticed Environment.Version is the real version on .NET Framework.
> Portable.NET returns it's own real version number that may be a wrong
> decission but according to the specification this property returns the
> version of the runtime.
>
> Mono returns constant version numbers taken from .NET Framework. I don't
> think this is a good choice as applications shouldn't rely on
> Environment.Version, it is for informational purposes only.
>
> It there a way to obtain the version form the runtime using P/Invoke or some
> managed interface?
No, not today (other than my --version hack, which actually isn't all
that bad).
> > If you want a simpler test, being able to load Mono.Posix via reflection
> > would be a pretty good one. Much better than depending on an internal
> > type like MonoType...
>
> I don't think so. The type used for detection has to be in mscorlib.dll as
> it is the only assembly that is runtime dependent, so each runtime has it's
> own implementation and cannot be used on other runtimes. The type has to be
> internal as public types are used to expose functionality, so they may be
> included later in other runtimes to provide compatibility with the others.
> MonoType is a good choice as has been ther for a long time and it's name is
> specific to Mono so I am sure it will not be used in other runtimes
Not true *at all*. jonp is write about Mono.Posix, it can probably be
used with other runtimes. However, you can't copy eg system.dll between
runtimes and expect it to work.
-- Ben
More information about the Mono-devel-list
mailing list