Как типы могут быть одновременно равными и неравными в C#? (.NET 8.0, Linux, собственный хост .NET)Linux

Anonymous
Как типы могут быть одновременно равными и неравными в C#? (.NET 8.0, Linux, собственный хост .NET)

Сообщение Anonymous »

ОС: Ubuntu 24.04 Linux
Рамка: .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-код выглядит так, как и следовало ожидать.
  • Ни одна сборка не загружается дважды.
Чего мне здесь не хватает? Неправильно настроен хост .NET? Как-то дважды загружать объект Typo? Ошибка CLR или JIT?

Подробнее здесь: https://stackoverflow.com/questions/792 ... stom-net-h

Вернуться в «Linux»