Поддерживает ли .NET nanoFramework на ESP32 универсальные шаблоны

Я пытаюсь написать приложение C# с универсальным классом, ориентированным на ESP32. При запуске отладчика процесс отладки расширения Visual Studio nanoFramework заходит в бесконечный цикл на этапе «Загрузка сборок развертывания».

Вот результат, который я вижу в окне отладки VS2019:

      Waiting for nanoDevice to initialize...
Debugger found. Resuming boot sequence.
Create Type System.
Loading Deployment Assemblies.
   Assembly: Esp32NanoframeworkScratch (1.0.0.0)   (212 RAM - 488 ROM - 226 METADATA)

   AssemblyRef    =        4 bytes (       1 elements)
   TypeRef        =        8 bytes (       2 elements)
   FieldRef       =        4 bytes (       1 elements)
   MethodRef      =       16 bytes (       4 elements)
   TypeDef        =       16 bytes (       2 elements)
   FieldDef       =        4 bytes (       1 elements)
   MethodDef      =       12 bytes (       5 elements)
   StaticFields   =        0 bytes (       0 elements)

   Attributes      =        0 bytes (       0 elements)
   TypeSpec        =        0 bytes (       0 elements)
   Resources       =        0 bytes (       0 elements)
   Resources Files =        0 bytes (       0 elements)
   Resources Data  =        0 bytes
   Strings         =       96 bytes
   Signatures      =       22 bytes
   ByteCode        =       40 bytes


   Assembly: mscorlib (1.10.3.0)   (3948 RAM - 31220 ROM - 18795 METADATA)

   AssemblyRef    =        0 bytes (       0 elements)
   TypeRef        =        0 bytes (       0 elements)
   FieldRef       =        0 bytes (       0 elements)
   MethodRef      =        0 bytes (       0 elements)
   TypeDef        =     1112 bytes (     139 elements)
   FieldDef       =      200 bytes (      99 elements)
   MethodDef      =     1568 bytes (     783 elements)
   StaticFields   =      144 bytes (      12 elements)

   Attributes      =       40 bytes (       5 elements)
   TypeSpec        =        4 bytes (       1 elements)
   Resources       =        0 bytes (       0 elements)
   Resources Files =        0 bytes (       0 elements)
   Resources Data  =        0 bytes
   Strings         =     2609 bytes
   Signatures      =     2095 bytes
   ByteCode        =     9686 bytes


Resolving.
   Assembly: mscorlib (1.10.3.0)   (3948 RAM - 31220 ROM - 18795 METADATA)
…(repeats the mscorlib assembly table forever)

Шаблон NFProject по умолчанию строит, запускает и отлаживает без проблем на моем оборудовании. Однако добавление универсального класса вызывает бесконечный цикл, показанный выше:

      using System.Threading;

namespace Esp32NanoframeworkScratch
{
    public class Program
    {
        public static void Main()
        {
            _ = new GenericBox<object> { Value = new object() };
            Thread.Sleep(Timeout.Infinite);
        }
        class GenericBox<T>
        {
            public T Value { get; set; }
        }
    }
}

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


Отмечу, что в 2018 году (см. Заключительный комментарий под статьей) участник проекта nanoFramework сообщил, что дженерики не поддерживаются. Однако я не могу найти никакой документации относительно поддержки / отсутствия поддержки дженериков. Поискав вокруг, я обнаружил этот объединенный запрос на перенос, который, кажется, добавляет поддержку универсальных шаблонов, и это сообщение в блоге, в котором описывается поддержка для и Linq "несовместимы".

Поддерживает ли нанокадр в настоящее время дженерики? А если нет, намерен ли проект поддерживать дженерики в будущем?

1 ответ

Дженерики поддерживают это в разработке. В настоящее время единственная недостающая часть - это добавление его поддержки в библиотеку отладчика VS. Мы планируем заняться этим в ближайшее время.

Другие вопросы по тегам