我有一個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