Сейчас у меня нет отличного решения для этого сценария. Я знаю, что некоторые люди заставили это работать, но я недостаточно разбираюсь в UWP / Native / iOS, чтобы дать вам надежные инструкции «вот путь к успеху».
UWP / .NET Native и iOS имеют (как вы знаете) общую проблему: отсутствие полной эмиссии во время выполнения. Я понимаю, почему. Это просто: сложно.
Исторически сложилось так, что protobuf-net пытался решить эту проблему с помощью инструмента сборки, который повторял существующий IL-эмит, обычно выполняемый во время выполнения — как инструмент времени сборки. Это было некрасиво и противно, но сработало. Что-то вроде. Чтобы обойти некоторые ограничения платформы, protobuf-net использовал некоторые инструменты IKVM, чтобы помочь с этим, но, поскольку среда .NET framework продолжает расширяться, это в основном нежизнеспособно. Плюс: инструмент IKVM теперь заброшен и не будет поддерживаться.
Параллельно с этим появляется все больше стимулов для изучения некоторых новых концепций:
- полный
async
/await
для асинхронных источников ввода-вывода: обратите внимание, что это крайне недружественно для генерации IL, но почти смущающе легко реализовать на C#
- "конвейеры"/"каналы"/"потоки 2" - как бы это не называлось на этой неделе; но: новая концепция ввода-вывода без выделения ресурсов, которая используется в Kestrel (я немного помог разобраться с этим, когда он был на ранних стадиях, поэтому я знаком с тем, что нужно делать) — обратите внимание, что это также связан с
async
/await
- и конечно же: как все вышеперечисленное относится к прегенерации
Прямо сейчас я полностью придерживаюсь мнения, что лучший путь вперед — это переключение сценария pre-gen на создание C# с помощью инструментов времени сборки. Я неоднократно ходатайствовал перед MS об улучшении автоматизированного генерирования C# на основе Roslyn, но до сих пор: никакой радости (досадно: материал asp.net даже имел полностью работающее доказательство концепции, но оно отложено). Итак, прямо сейчас я думаю: нам нужно предположить, что этого не произойдет, и, по сути, написать это самостоятельно. Это не обязательно так сложно, как кажется (и мне очень хорошо знакомы различные формы codegen). Преимущество C# emit здесь в том, что мне не нужно бороться с тонкостями каждого фреймворка — мне просто нужно заставить его скомпилироваться (ну и запуститься, очевидно).
Итак: что меня удерживает? Теоретически: ничего. Мне просто нужно, чтобы этот материал был написан и развернут. На самом деле: жизнь, время и т. д. Я виновен в том, что отдаю предпочтение вещам, которые влияют на меня ежедневно, и реальность такова, что я не являюсь пользователем этих платформ каждый день, а значит, я не чувствовать боль, которую ты чувствуешь. Но: я слышу вас громко и ясно, и я пытаюсь ускорить работу над версией 3, которая должна решить эти проблемы. Я действительно хочу иметь хорошую историю для этих вещей, и моя цель состоит в том, чтобы переход на модель генерации C# (по крайней мере, для pre-gen): это помогает мне эм>. И если это поможет мне, я знаю, что это не будет забытая игрушка на чердаке или в подвале, о которой я знаю, но у которой трудно найти мотивацию пойти к проблеме найти.
person
Marc Gravell
schedule
07.12.2017
ERR_CONNECTION_CLOSED
. Все плагины (например, Adblock, Noscript и т. д.) отключены. - person EaranMaleasi   schedule 07.12.2017https://blog.marcgravell.com
, но я только что проверил его с помощью chorme на своем мобильном телефоне, который отлично работает. Затем я использовал точку доступа для подключения машины через свой телефон к Интернету, и она также загружалась. Похоже, это внутренняя проблема. - person EaranMaleasi   schedule 07.12.2017