2016-08-17 2 views
0

Я пытаюсь загрузить JavaScript в мое приложение с помощью ChakraBridge и я последовал за действия, указанные в следующем блокеИсключение брошено: «System.Exception» в ChakraBridge.winmd не удалось запустить отладку

Using JavaScript Framework in UWP

и также на GitHub JsBridge

Я добавил ChakraBridge.winmd в качестве ссылки в моем проекте, и он отлично работает, когда режим отладки является скриптом. Когда я меняю его на 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() 

Кроме того, он отлично работает, когда я отладки в моем ноутбуке, и когда я отлаживаю мобильную версию или в Mobile Emulator, это дает мне это исключение. Это из-за того, что папка dist доступна на моем ноутбуке, откуда я переписываю ChakraBridge.winmd?

+0

Я не могу воспроизвести вашу проблему на моей стороне. Не могли бы вы поделиться [mcve]? –

+0

@ JayZuo-MSFT Я добавил пример. Создайте новый проект. Refrence 'ChakraBridge.winmd' как refrence и попробуйте сделать это в режиме отладки как * Только управляемый *. Это работает, когда Debug Application Application является * Script *, но не работает с * Managed Only * и * Release mode. * –

+0

Если он работает в режиме отладки в сценарии, то вы знаете, что это не критическое исключение.Не забудьте правильно настроить отладчик, используйте Debug> Windows> Exception Settings и сбросьте флажки, если они отмечены галочкой. Если у вас все еще есть проблема, * * * отправьте трассировку стека исключений. –

ответ

2

Да, я могу воспроизвести вашу проблему при использовании Mobile Emulator и установить для параметра «Тип отладчика» значение «Управляемый только». Ниже приведено исключение: 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 при использовании Mobile Emulator и настройка "Debugger типа" на "Управляемый только". Таким образом, мы получили выше исключения в нашем приложении.

Эта проблема, похоже, происходит только в Mobile Emulator. При тестировании на локальном компьютере или устройстве оба могут работать. Согласно коду, эта ошибка должна появляться только в режиме отладки. И если мы добавим проект ChakraBridge в наше решение, приложение может работать в режиме выпуска в эмуляторе. На данный момент вы можете протестировать свое приложение на локальном компьютере или реальном мобильном устройстве и отслеживать this issue на GitHub.

+0

Вы просите добавить весь проект или файл ChakraBridge.winmd в порядке? –

+0

@KinjanBhavsar Добавляя весь проект ChakraBridge в ваше решение, ваше приложение должно работать в режиме Release на эмуляторе. –

+0

Если я просто использую ChakraBridge.winmd, тогда он будет работать на устройстве в режиме Release? –

Смежные вопросы