Возникло исключение: System.Exception в ChakraBridge.winmd не удалось начать отладку
Я пытаюсь загрузить javascript в свое приложение, используя ChakraBridge, и я выполнил шаги, указанные в следующем блоке
Использование JavaScript Framework в UWP
а также на GitHub JsBridge
Я добавил ChakraBridge.winmd в качестве ссылки в моем проекте, и он отлично работает, когда режим отладки - Script. Когда я изменяю его на Managed Only, это дает мне исключение и то же самое для режима Release.
Может кто-нибудь подсказать в чем проблема?
Вот пример. Я пытаюсь назначить дату по умолчанию в DatePicker в моем проекте, используя ChakraBridge API
if (!string.IsNullOrEmpty(javascriptFunction))
{
try
{
ChakraHost dateHost = new ChakraHost();
string dateValue = dateHost.RunScript(javascriptFunction);
var finalDate = DateTime.ParseExact(dateValue, "dd-MM-yyyy", CultureInfo.InvariantCulture);
datePicker.Date = finalDate.Date;
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
Функция JavaScript является
function executeScript(){var now = new Date(new Date().getTime() - (7*24*60*60*1000)); return ('0'+now.getDate()).substr(-2)+'-'+('0'+(now.getMonth()+1)).substr(-2)+'-'+now.getFullYear();} executeScript();
StackTrace я получаю
at ChakraBridge.ChakraHost..ctor()
at MCS.MCSDynamicViewBuilder.<GenerateDynamicControlforMobile>d__10.MoveNext()
Кроме того, он отлично работает, когда я отлаживаю в своем ноутбуке, и когда я отлаживаю в мобильном или в мобильном эмуляторе, это дает мне это исключение. Это связано с папкой dist, доступной на моем ноутбуке, откуда я ChakraBridge.winmd
?
1 ответ
Да, я могу воспроизвести вашу проблему, используя мобильный эмулятор и установив "Тип отладчика" на "Только управляемый". Ниже приведено исключение ChakraHost dateHost = new ChakraHost();
,
Исключение типа "System.Exception" возникло в ChakraBridge.winmd, но не было обработано в коде пользователя
Дополнительная информация: не удалось начать отладку.
В ChakraBridge он вызывает JsStartDebugging, чтобы начать отладку в текущем контексте, если он находится в режиме отладки.
#if DEBUG
// Debug
if (Native.JsStartDebugging() != JavaScriptErrorCode.NoError)
throw new Exception("failed to start debugging.");
#endif
Тем не мение, Native.JsStartDebugging
метод возвращает Fatal
при использовании мобильного эмулятора и установке "Тип отладчика" на "Только управляемые". Таким образом, мы получили выше исключения в нашем приложении.
Эта проблема, кажется, происходит только в мобильном эмуляторе. Во время тестирования на локальной машине или устройстве оба могут работать. Согласно коду, эта ошибка должна возникать только в режиме отладки. И если мы добавим проект ChakraBridge в наше решение, приложение может работать в режиме выпуска в эмуляторе. На данный момент вы можете протестировать свое приложение на локальном компьютере или реальном мобильном устройстве и отслеживать эту проблему на GitHub.