У меня есть рабочий стол Windows 7 x64 с vs2010 и виртуальная установка Linux с mono и monodevelop. Я компилирую следующую программу с помощью vs2010 и запускаю ее на виртуальной машине Linux, и она завершается с ошибкой FileNotFoundException, которая кажется неуловимой. Если я скомпилирую его в виртуальной машине и запущу в Windows, он отлично работает.
Проблема, по-видимому, заключается в том, что моно выбрасывает неперехватываемое исключение перед Main(), когда невозможно загрузить dll. Есть ли способ реструктурировать мою программу или заставить моно, чтобы я мог поймать это исключение?
Я пытаюсь написать одну программу, которая имеет интерфейс либо в 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
}
}
}