Разница в режимах отладки и выпуска .NET Maui IOS

У меня странная проблема. Я создал приложение .NET MAUI. В какой-то момент моего приложения я загружаю некоторые базовые старые сборки .NET, которые я раньше загружал в массив байтов, например;

      byte[] asmbinary=loadassemblybinary();
Assembly MyAssembly = Assembly.Load(asmbinary);

Он идеально работает на

  • WinUI (как в режиме отладки , так и в режиме выпуска ),

  • Android ( режимы отладки и выпуска ),

  • MacCatalyst (в режимах отладки и выпуска ),

  • iOS ( режим отладки )

но в режиме выпуска iOS приложение вылетает на Assembly.Load без исключения (даже я не могу поймать его с помощью try).

На самом деле мне не нужен режим выпуска, но у меня есть несколько CollectionViews в моем приложении. Производительность прокрутки CollectionView очень плохая в режимах отладки, но работает гладко в режиме выпуска для всех платформ. (я не мог понять, почему пользовательский интерфейс имеет такую ​​​​низкую производительность в режиме отладки или как это исправить. Обходной путь для этого также был бы хорош)

Теперь мне нужно либо ускорить производительность пользовательского интерфейса в режиме отладки, либо исправить Assembly.Load в режиме выпуска iOS.

Любая идея для моей ситуации?

Заранее спасибо.

Эндер

1 ответ

Я не мог понять, почему пользовательский интерфейс имеет такую ​​низкую производительность в режиме отладки и как это исправить. Обходной путь для этого также был бы хорош

Похожая проблема была опубликована в разделе «Вопросы и ответы». Вы можете добавить следующий код в MauiProgram, чтобы попытаться решить ее:

      using Microsoft.Maui.Platform;// namespace

#if IOS   // add handler in MauiProgram.cs   
Microsoft.Maui.Handlers.ScrollViewHandler.Mapper.AppendToMapping("custom", (handler,view) =>        {           
 handler.PlatformView.UpdateContentSize(handler.VirtualView.ContentSize);            
 handler.PlatformArrange(handler.PlatformView.Frame.ToRectangle());       
 });
#endif

Для получения дополнительной информации вы можете обратиться к вопросу вопросов и ответов:MAUI — CollectionView и прокрутка — не работает с эмуляторами IOS.

Обновление: в режиме Release из-за того, что компилятор оптимизирует и сжимает код сильнее, на некоторые зависимости могут ссылаться неправильно. Вы можете проверить свой проект на наличие отсутствующих зависимостей и убедиться, что на них правильно ссылаются.

Попытайтесь загрузить сборку с помощью метода Assembly.LoadFile() . Этот метод может загружать сборку по указанному пути к файлу, а не из массива байтов.

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