Почему после обновления на VS2013.4 перестал запускаться проект?

Столкнулся с очень странной проблемой.
Есть windows store universal project на html5 + c# компонент.

После обновления вижуал студии с 2013.3 до 2013.4 внезапно отказались работать асинхронные плюшки в c#.

Максимально упрощая и сокращая:
namespace CsharpNS {
  public sealed class SampleClass {
    public static function DoSomething () {
    }
  }
  internal class Foo {
    internal Foo () {
    }
    internal IAsyncOperation<string> Bar(){
       return Task<string>.Run( /* async */ () => {
         // await Task.Delay(1000);
         return "";
       }).AsAsyncOperation();
    }
  }
}


console.log(CsharpNS.SampleClass.doSomething); // метод существует.
CsharpNS.SampleClass.doSomething(); // если раскомментировать async и delay, то бросается WinRTError: Class not registered. иначе отрабатывает нормально

Самое забавное, компилируется все нормально; но достаточно где-либо объявить какую-то асинхронную вешь, как все накрывается медным тазом.

Причем в 2013.3 все работает нормально.

Убил уже день, пытаясь понять, что я не так делаю, что изменилось и где искать грабли.

О, великий хабраразум, помоги же мне.
  • Вопрос задан
  • 2266 просмотров
Решения вопроса 1
mjr27
@mjr27 Автор вопроса
Тадам. Решение найдено. В package.appxmanifest нужно добавить руками секцию
<Estensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>CLRHost.dll</Path>
        <ActivatableClass ActivatableClassId="Class1" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="Class2" ThreadingModel="both" />
...
        <ActivatableClass ActivatableClassId="ClassN" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
  </Extensions>

в которой указаны все вызываемые из winrt классы. По видимому, какие-то глюки с их автоматическим поиском и добавлением в appxmanifest.

Всем (то есть тебе, Макс) спасибо, вопрос закрыт :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
После 2013.4 у меня появилось навязчивое уведомление, о том, что надо приобрести какую-то лицензию для публикации приложении на Windows Store. Скорее всего, может и библиотеки поменялись? Попробуйте сделать Rebuild или Clean.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы