Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir önbelleği temizlemeyi veya kullanıcı arabirimini yenilemeyi gerektiren kod değişiklikleri gibi normalde desteklenmeyen ek senaryolar için .NET Çalışırken Yeniden Yükleme desteğini program aracılığıyla genişletebilirsiniz. Örneğin, bir JSON serileştiricisi ile anında yeniden yüklemeyi desteklemek için, bir tür değiştirildiğinde önbelleğini temizlemeniz gerekir. .NET MAUI geliştiricileri için, bir oluşturucuyu veya bir kullanıcı arabirimi öğesi için olay işleyicisini düzenleme gibi normal koşullarda hot reload'u tetiklemeyen düzenleme/güncelleştirmeler için hot reload'u genişletmeniz gerekebilir. uygulama durumunu yenilemek, kullanıcı arabiriminin yeniden işlenmesini tetiklemek veya benzer eylemler gerçekleştirmek için MetadataUpdateHandlerAttribute'i kullanabilirsiniz.
Bu öznitelik tarafından belirtilen tür, aşağıdakilerden birinin veya daha fazlasının imzası ile eşleşen statik yöntemler uygulamalıdır:
static void ClearCache(Type[]? updatedTypes)
static void UpdateApplication(Type[]? updatedTypes)
ClearCache güncelleştirme işleyicilerine, uygulamanın meta verilerine göre çıkarsanan tüm önbellekleri temizleme fırsatı verir. Tüm ClearCache yöntemler çağrıldıktan sonra, UpdateApplication birini belirten her işleyici için çağrılır. Kullanıcı arabirimini yenilemek için kullanabilirsiniz UpdateApplication .
Example
Aşağıdaki örnek, başlangıçta anında yüklemeyi desteklemeyen, ancak MetadataUpdateHandler uygulandıktan sonra özelliği destekleyen bir .NET MAUI projesi senaryosunu gösterir.
.NET Anında Yeniden Yüklemeyi Test Et
Visual Studio'da yeni bir .NET MAUI projesi oluşturun. .NET MAUI Uygulaması proje şablonunu seçin.
App.xaml.cs mainpage oluşturmak için kodu aşağıdaki kodla değiştirin:
//MainPage = new MainPage(); // Template default code MainPage = new NavigationPage(new MainPage());Ardından, C# dilinde kullanıcı arabirimi güncelleştirmesini basitleştirmek için bir Derleme yöntemi uygulayacaksınız. Bu yöntem,
ContentPage.Contentöğesini ayarlar ve sayfanınOnNavigatedToiçinde çağrılır.OnNavigatedToolayı Shell veya NavigationPage içinde barındırılmalıdır.MainPage.xaml.cs oluşturucu kodunu aşağıdaki kodla değiştirin
MainPage:public MainPage() { InitializeComponent(); Build(); } void Build() => Content = new Label { Text = "First line\nSecond line" }; protected override void OnNavigatedTo(NavigatedToEventArgs args) { base.OnNavigatedTo(args); Build(); }Uygulamayı başlatmak için F5 tuşuna basın.
Sayfa yüklendikten sonra C# kodundaki etiket metnini şu şekilde değiştirin: "birinci satır\nİkinci satır\nÜçüncü satır"
Sık Erişimli Yeniden Yükle

Güncelleştirilmiş metin çalışan uygulamada görüntülenmez. Bu senaryo için varsayılan olarak Hot Reload desteği yoktur.
MetadataUpdateHandler'i ekleme
.NET MAUI uygulamasında, kod değişikliği yaptıktan sonra C# kullanıcı arabirimi kodunu yeniden çalıştırmak için bir şey yapmanız gerekir. Kullanıcı arabirimi kodunuz C# dilinde yazılmışsa, kullanıcı arabirimini UpdateApplication yeniden yüklemek için içindeki MetadataUpdateHandler yöntemini kullanabilirsiniz. Bunu ayarlamak için aşağıdaki kodu kullanarak uygulamanıza HotReloadService.cs ekleyin.
#if DEBUG
[assembly: System.Reflection.Metadata.MetadataUpdateHandlerAttribute(typeof(YourAppNamespace.HotReloadService))]
namespace YourAppNamespace {
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
öğesini hedeflediğiniz sayfanın ad alanıyla değiştirdiğinizden YourAppNamespace emin olun.
Önceki kod eklendiğinde, Visual Studio'da canlı kodu düzenlediğinizde bir meta veri değişikliği gerçekleşir ve uygulama tarafından UpdateApplicationEventgönderilir. Bu nedenle, olayı kaydetmek ve kullanıcı arabirimi güncelleştirmesini gerçekleştirmek için kod eklemeniz gerekir.
Uyarı
Bu senaryo için XAML Canlı Yeniden Yükleme etkinleştirilmelidir.
MainPage.xaml.cs olay işleyicisini UpdateApplicationEventOnNavigatedTo olaya kaydetmek için kod ekleyin.
protected override void OnNavigatedTo(NavigatedToEventArgs args)
{
base.OnNavigatedTo(args);
Build();
#if DEBUG
HotReloadService.UpdateApplicationEvent += ReloadUI;
#endif
}
Olay işleyicisinin OnNavigatedFrom aboneliğini kaldırın ve ardından olayı işlemek için kod ekleyip Build çağrısını yeniden yürütün.
protected override void OnNavigatedFrom(NavigatedFromEventArgs args)
{
base.OnNavigatedFrom(args);
#if DEBUG
HotReloadService.UpdateApplicationEvent -= ReloadUI;
#endif
}
private void ReloadUI(Type[] obj)
{
MainThread.BeginInvokeOnMainThread(() =>
{
Build();
});
}
Şimdi uygulamayı başlatın. C# kodunuzda etiket metninde değişiklik yaptığınızda ve Sık Erişimli Yeniden Yükle düğmesine bastığınızda kullanıcı arabirimi yenilenir!