Если вы считаете, что проблема заключается в зависимостях, то, возможно, стоит взглянуть на «Средство просмотра журнала привязки сборки» (т.е. fuslogvw.exe).Этот инструмент должен быть в состоянии точно сказать, какие сборки были запрошены и как были выполнены запросы или не выполнены.Уловка в том, что это работает только для управляемых сборок.
Если, однако, вы хотите выяснить, что такое необработанное исключение, вы можете обернуть попытку ... поймать точку входа приложения.Подвох в WPF заключается в том, что он генерируется компилятором / Visual Studio, поэтому вы не можете его изменить.Если вы хотите изменить его, скажем, чтобы попытаться ... поймать его, тогда вам нужно (пример взят из http://www.infosysblogs.com/microsoft/2008/09/how_to_write_custom_main_metho.html):
- Найти файлы App.xaml и App.xaml.cs
- Откройте страницу свойств для App.xaml и измените действие построения на «Страница»
В App.xaml.cs добавьте метод Main (), который должен выглядеть следующим образом:
[STAThread]
public static void Main()
{
var app = new App();
app.InitializeComponent();
app.Run();
}
Если вы попытаетесь обернуть попытку ... поймать все тело метода, то вы можете записать любую информацию об ошибке в текстовый файл. Надеюсь, это поможет вам выяснить, чтонеправильно.
===== РЕДАКТИРОВАТЬ =====
Если необработанное исключение не перехватывается конструкцией try .. catch, то это может быть проблемой связывания.JIT-компилятор компилирует методы по мере необходимости, это может помочь убрать почти весь код из метода ввода, например:
<!-- language: lang-cs -->
[STAThread]
public static void Main()
{
try
{
MyMethod();
}
catch(Exception e)
{
// ... Write to file here
}
}
private static void MyMethod()
{
// .. Do actual work here
}
Делая это, вы убедитесь, что находитесь внутри попытки.поймать конструкцию до того, как среда выполнения попытается найти нужные сборки и т. д. Однако неНапример, есть некоторые исключения, которые не могут быть перехвачены (OutOfMemoryException, StackOverflowException и некоторые другие).