我有一个Windows 7 x64桌面与vs2010和一个虚拟框安装与单声道和monodevelop的Linux。我用vs2010编译下面的程序,并在linux虚拟机中运行它,并且它看起来不可捕捉的FileNotFoundException失败。如果我在虚拟机中编译并在Windows中运行它,它会很好。如何在Mono上运行时遇到FileNotFoundException并且缺少DLL?
问题似乎是,无法加载dll时,无法捕获的异常在Main()之前被mono抛出。有没有办法重构我的程序或强制单声道,以便我可以捕获此异常?
我正在尝试编写一个程序,该程序根据运行时可用的内容在WPF或GTK中具有接口。
using System;
#if __MonoCS__
using Gtk;
#else
using System.Windows;
#endif
using System.IO;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
namespace Test {
public static class Program {
[STAThread]
public static void Main() {
try {
Main2();
} catch (FileNotFoundException e) {
Console.WriteLine("Caught FileNotFoundException");
Console.WriteLine("FileName = {0}", e.FileName);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public static void Main2() {
#if __MonoCS__
Application.Init();
#else
Window w = new Window();
#endif
}
}
}
将Main2放在另一个班级中并没有帮助。你说的话是有道理的,尽管扔掉一个不可捕捉的异常的概念对我来说是非常令人沮丧的。我打算把这个问题留出一段时间,看看有没有人有一个神奇的答案,但我似乎不可避免地会给你答案。谢谢。 – zope 2010-08-18 19:09:01