Я работаю над довольно большим приложением Silverlight 4 (42 проекта в одном решении), и я борюсь с действительно странной проблемой.

Приложение отлично работает в отладочной сборке, и даже в выпускной сборке оно запускается с подключенным отладчиком (F5), но когда оно запускается без отладки, загружается silverlight xap, а затем отображается только пустая страница.

Я обрабатываю исключение Application_UnhandledException, которое не запускается, поэтому получить от него какую-либо полезную информацию практически невозможно, тем более что я не могу воспроизвести это поведение с подключенным отладчиком.

Какие различия существуют во время выполнения, когда подключен отладчик, которые могут вызвать эту проблему?

Изменить: я также должен добавить, что сборка отладки также работает без подключенного отладчика.

2
Andronicus 7 Сен 2010 в 06:56

2 ответа

Лучший ответ

Оказывается, проблема заключалась в том, что сборка выпуска выполняет некоторые оптимизации, которые изменяют вызывающую сборку.

Мы регистрируем типы в контейнере IoC с помощью отражения, а в отладке Assembly.GetCallingAssembly (). GetTypes () всегда возвращает ожидаемую сборку. Но в режиме выпуска вызывающая сборка - это сгенерированная анонимно размещенная сборка DynamicMethods, поэтому наши типы не были зарегистрированы в контейнере IoC, и приложение аварийно завершает работу в режиме выпуска.

Исправление заключалось в использовании вместо этого this.GetType (). Assembly.

Проблема усугубляется тем, что Silverlight просто показывает пустую страницу при возникновении исключения из контейнера IoC, поэтому очень сложно определить причину сбоя. Конечно, есть способ изменить это поведение?

2
Andronicus 8 Сен 2010 в 06:02
+1. Хорошая находка и продолжение. Этот вопрос / ответ наверняка пригодится другим, кто столкнется с проблемой в будущем.
 – 
Todd Main
8 Сен 2010 в 06:09

Распространенной причиной пустых страниц при развертывании IIS является отсутствие определений MIME TYPES. В зависимости от типа приложения Silverlight необходимо добавить один или несколько из следующих типов:

.xap приложение / x-silverlight-app .xaml приложение / xaml + xml .xbap приложение / x-ms-xbap

1
Nikos Tsokos 26 Окт 2011 в 13:16