Рамка: .NET 8.0.10
IDE: Rider (последняя версия)
Я создаю собственный хост .NET из собственный проект Linux для запуска управляемого кода.
Проблема в том, что я получаю логическое противоречие при сравнении типов примерно в 50% случаев. Проблема воспроизводима на 100 % и возникает только в Linux и при использовании специального хоста .NET.
Это также влияет на выполнение метода GetCustomAttributes, который не может найти атрибуты. в таких случаях. Отладка привела меня к ситуации, видимой на скриншоте, когда типы не совпадают, но когда я сравниваю их в отладчике (см. переменную watch), они совпадают.

Точно тот же код работает хорошо (может соответствовать всем типам), если я запускайте управляемый код непосредственно в консоли исполняемый файл без специального хоста .NET.
Я следовал инструкциям Microsoft, чтобы написать собственный хост .NET:
https://learn.microsoft.com/en-us/ dotnet/core/tutorials/netcore-hosting
Помимо вышеуказанной проблемы, хост .NET работает хорошо, может загружать все сборки, и весь остальной код работает нормально.
- Это не проблема отладчика, поскольку проблема также затрагивает GetCustomAttributes (метод стандартной библиотеки).
- Я проверил все проекты и зависимости, они хорошие. Nullable отключен во всех проектах и выбран C# 11. У меня есть только библиотечные проекты.
- Сгенерированный IL-код выглядит так, как и следовало ожидать.
- Ни одна сборка не загружается дважды.
Подробнее здесь: https://stackoverflow.com/questions/792 ... stom-net-h
Мобильная версия