Поддерживает ли .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 сообщил, что дженерики не поддерживаются. Однако я не могу найти никакой документации относительно поддержки / отсутствия поддержки дженериков. Поискав вокруг, я обнаружил этот объединенный запрос на перенос, который, кажется, добавляет поддержку универсальных шаблонов, и это сообщение в блоге, в котором описывается поддержка для
Поддерживает ли нанокадр в настоящее время дженерики? А если нет, намерен ли проект поддерживать дженерики в будущем?
1 ответ
Дженерики поддерживают это в разработке. В настоящее время единственная недостающая часть - это добавление его поддержки в библиотеку отладчика VS. Мы планируем заняться этим в ближайшее время.