Разница в режимах отладки и выпуска .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() . Этот метод может загружать сборку по указанному пути к файлу, а не из массива байтов.