Подтвердить что ты не робот

Silverlight 4/.NET 4 Отладка строк ресурсов

Недавно я встретил странную вещь. На некоторых серверах моей компании, когда выводится сообщение об исключении (да, плохо, я знаю. Это для отладки), фактическое сообщение не отображается. Вместо этого он отображает ключ для внешнего строкового ресурса и говорит, что "Отладка строк ресурсов недоступна"

После некоторых исследований я придумал следующее: В режиме освобождения Silverlight не упаковывает xap с DLL, содержащую фактические сообщения об ошибках, чтобы сэкономить место.

Я нашел обходные пути для OLD-версий, но ничего для 4. Кажется, есть версии Developer SL 2 и 3, которые автоматически разрешат ошибки, но я не могу найти их для SL 4.

Итак, мой вопрос:

Что мне нужно сделать с моим приложением/компьютером SL 4, чтобы я мог видеть полные подробные ошибки, когда он находится в режиме выпуска?

4b9b3361

Ответ 1

Вы можете загрузить исполняемую среду разработчика (которая содержит полные строки исключений) со страницы GetStarted - http://www.silverlight.net/getstarted/ - поиск по "Developer Runtimes для Windows и OSX", он находится в нижней части страницы.

Ответ 2

Хотя слишком поздно отвечать, это может помочь кому-то другому. У нас есть веб-приложение с использованием Silverlight 4, установленное в различных тестовых средах. Это веб-приложение потребляет более одного сервиса WCF. Все, кроме одного из сайтов тестовой среды, последовательно выходили с сообщением "Отладка строк ресурсов недоступна". Разумеется, настоящее исключение было проглочено. Являясь приложением Silverlight, журнала не было, и всегда казалось, что в компоненте Silverlight что-то не получилось. Я подключил приложение в своей среде разработки к этой конкретной тестовой среде и выяснил, что проблема была фактически в одной из служб WCF. Я исправил проблему на конце обслуживания, и компонент SL остановился с этой проблемой.

Почему произошел сбой WCF?

У службы WCF в конструкторе был следующий код:

public MyService()
    {
        //Create an instance of Data Lookup service asycnchronously.
        if (_dataLookupSrvc == null)
        {
            try
            {
                System.Threading.Tasks.Task.Factory.StartNew(() => _dataLookupSrvc = new LookupDataService.LookupDataService());
            }
            catch (Exception ex)
            {
                _log.Error<Exception>(ex);
            }
        }
    }

Кто-то переместил базовую LookupDataService.dll из служебной папки, в результате чего конструктор потерпит неудачу, но не сразу. Поскольку экземпляр LookupDataService был создан в анонимном методе, журнал регистрации исключений в этом методе так и не состоялся. После того, как LookupDataService.dll был сброшен в служебной папке, сообщение "Отладочные строки ресурсов недоступны" исчезло.

Это была забавная дикая гусиная погоня!

Ответ 3

Вы уже проверили средство просмотра событий на компьютере, где приложение разбилось? Пуск- > Выполнить. eventvwr