Silverlight 4 / .NET 4 Отладка строк ресурсов - PullRequest
28 голосов
/ 10 мая 2011

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

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 23 мая 2011

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

1 голос
/ 02 февраля 2013

Хотя уже слишком поздно, чтобы ответить, это может помочь кому-то еще.У нас есть веб-приложение, использующее 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 был удален в папку службы, сообщение «Отладка строк ресурса недоступна» исчезло.

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

0 голосов
/ 25 мая 2011

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

...