У меня есть приложение HTML5, которое содержит компонент .winmd, используемый для операций файловой системы (sqlite, zip-архивы и т.д.).
После обновления до 2013 года этот компонент внезапно перестает работать. Javascript по-прежнему видит все классы и функции, но когда я пытаюсь вызвать любой из них, я получаю исключение "WinRT: Class not registered".
Полная переустановка VS не помогла. Также не обновилась версия сообщества. Это поведение воспроизводится как на рабочем столе (8.1pro), так и на ноутбуке (один одиночный язык win8.1)
Я потратил 2 дня, пытаясь понять, что неправильно, и я обнаружил, что он терпит неудачу, как только компонент включает в себя любую асинхронную активность (например, await/async или просто Task.Delay(100))
Итак, моя забота... Что происходит? Где я был неправ и что я могу сделать?
В настоящий момент установка предварительного просмотра 2015 года. Если я вернусь к 2013.3.3, используя восстановление системы, проект работает нормально, но VS переходит в полуразрушенное состояние, и на веб-сайте MS нет ссылки для загрузки предыдущей версии.
Если то, что я говорю, не имеет никакого смысла, я могу загрузить файл с самым простым возможным решением VS, чтобы воспроизвести проблему. Но вкратце это так же просто, как:
namespace NSUtil {
public sealed class Test{
public static IAsyncOperation<string> DoSomething () {
return Task<string>.Run(async () => {
await Task.Delay(100);
return "";
}).AsAsyncOperation();
}
}
}
и как только я вызываю NSUtil.Test.doSomething()
из javascript, я получаю исключение WinRTError: Class not registered
.
Итак, вопрос в том, что.... Что случилось со мной/моими установщиками pc/my vs/microsoft?