Как типы могут быть одновременно равными и неравными в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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