以编程方式确定Mono运行时版本
本文关键字:运行时 版本 Mono 编程 方式确 | 更新日期: 2023-09-27 18:16:56
以编程方式确定Mono运行时版本的推荐方法是什么?
当我们的。net应用程序与旧版本的Mono一起使用时,我们遇到了各种问题。如果我们知道我们正在处理的是哪个版本,有时我们可以解决这些问题,但有时我们不能。
我们的解决方案是以编程方式检测Mono版本,然后我们可以透明地应用变通方法。如果Mono版本太旧,我们会提示用户升级。
我们可以发现Mono是我们的运行时,像这样:
bool isMonoRuntime = Type.GetType("Mono.Runtime") != null;
我们如何在不间接推断的情况下可靠地确定单版本?为了清楚起见,我们需要的是Mono版本号,而不是。net CLR版本号。
您可以查看mono运行时版本:
Type type = Type.GetType("Mono.Runtime");
if (type != null)
{
MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
if (displayName != null)
Console.WriteLine(displayName.Invoke(null, null));
}
检查此如何确定构建和安装当前Mono运行时的版本?
这是另一个解决方案(不使用反射)
[DllImport("__Internal", EntryPoint="mono_get_runtime_build_info")]
public extern static string GetMonoVersion();
Console.WriteLine("Mono version: {0}",GetMonoVersion());
Mono version: 3.12.0 (tarball Sat Feb 7 19:13:43 UTC 2015)
你可以这样做:
System.Reflection.Assembly.GetExecutingAssembly().ImageRuntimeVersion
它会给你Mono CLR版本,作为奖励,它会给你Windows上的CLR版本。
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.imageruntimeversion.aspx