linux-packaging-mono/mcs/build/common/basic-profile-check.cs
Xamarin Public Jenkins (auto-signing) 19234507ba Imported Upstream version 5.14.0.78
Former-commit-id: 3494343bcc9ddb42b36b82dd9ae7b69e85e0229f
2018-05-10 08:37:03 +00:00

56 lines
1.2 KiB
C#

using System;
class X {
// Check installed compiler
static void Generic<T> ()
{
// we use 'var' all around in the compiler sources
var x = new X ();
}
void DefaultParametersAvailable (int i = 3)
{
}
static int Main ()
{
// Check installed mscorlib
// Type is included in Mono 2.4+, and .NET 3.5 SP1
object o = typeof (System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute);
// It should crash but double check it in case of very old old runtime
if (o == null)
return 1;
var consts = o.GetType ().Assembly.GetType ("Consts");
if (consts == null) {
// We could be bootraping on cygwin using .net runtime
var assembly = o.GetType ().Assembly;
if (assembly.GetName ().Version >= new Version (4, 0) && assembly.Location.Contains ("Microsoft.NET"))
return 0;
return 2;
}
var field = consts.GetField ("MonoVersion");
if (field == null)
return 3;
Version version;
if (!Version.TryParse (field.GetValue (null) as string, out version))
return 4;
Version min_mono_version;
#if __MonoCS__
min_mono_version = new Version (5, 13);
#else
min_mono_version = new Version (5, 10);
#endif
if (version < min_mono_version)
return 5;
return 0;
}
}