我在iOS项目中尝试实现热重载时遇到问题。我已经遵循了微软提供的说明,但它似乎不适用于iOS。是否有专门针对iOS的其他配置或步骤?
HotReloadService.cs
#if DEBUG
[assembly: System.Reflection.Metadata.MetadataUpdateHandlerAttribute(typeof(ThreadsApp.Helpers.HotReloadService))]
namespace ThreadsApp.Helpers;
public static class HotReloadService
{
#pragma warning disable CS8632 // The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
public static event Action<Type[]?>? UpdateApplicationEvent;
#pragma warning restore CS8632 // The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
internal static void ClearCache(Type[]? types) { }
internal static void UpdateApplication(Type[]? types)
{
UpdateApplicationEvent?.Invoke(types);
}
}
#endif
BasePage
using ThreadsApp.Helpers;
namespace ThreadsApp.Pages;
public abstract class BasePage : ContentPage
{
public abstract void Build();
protected override void OnNavigatedTo(NavigatedToEventArgs args)
{
base.OnNavigatedTo(args);
Build();
#if DEBUG
HotReloadService.UpdateApplicationEvent += ReloadUI;
#endif
}
protected override void OnNavigatedFrom(NavigatedFromEventArgs args)
{
base.OnNavigatedFrom(args);
#if DEBUG
HotReloadService.UpdateApplicationEvent -= ReloadUI;
#endif
}
private void ReloadUI(Type[] obj)
{
MainThread.BeginInvokeOnMainThread(() =>
{
Build();
});
}
}
我已经将此构建集成到我的iOS项目中,并在我的UI页面中继承了指定的基类,而不是ContentPage。但是,当我进行更改时,iOS项目中似乎没有触发任何事件。
我也尝试在iOS Visual Studio首选项中设置Hot Advertisement,但它没有解决这个问题。
1条答案
按热度按时间mutmk8jj1#
As stated in MAUI Hot Reload document,不支持c#代码热重载。
XAML Hot Toolkit不会重新加载C#代码,包括事件处理程序。
从你的帖子中的描述来看,你正在使用MetadataUpdateReader来扩展.NET Hot插件,这是VS的一个功能。我可以在iOS平台上重现这个问题,建议你尝试使用VS(https://learn.microsoft.com/en-us/visualstudio/ide/how-to-report-a-problem-with-visual-studio?view=vs-2022)报告问题。