Visual Studio 2022 - jak działa ten hot reload?

0

Zainstalowałem VS 2022, utworzyłem program konsolowy .NET Core 6:

for (; ; )
{
    Console.WriteLine("Hello, World!");
}

Uruchamiam przez F5, pokazuje mi:
Hello, World!
Hello, World!
Hello, World!
........

Zmieniam kod na:

for (; ; )
{
    Console.WriteLine("aaaaaa");
}

Zapisuję plik, klikam przycisk hot reload:

2.PNG

I nic się nie zmienia, dalej leci wyświetlanie:
Hello, World!
Hello, World!
Hello, World!
........

4

Mogę się mylić ale chyba nie można zmienić funkcji w której się jest i już jest skompilowana JIT i się wykonuje. Jeśli zmienisz kod na:

for (; ; )
{
    Hello();
}

void Hello()
{
    Console.WriteLine("Hello, World!");
}

to zmiany widać od razu. Prawdopodobnie działa to w ten sposób że wyrzucana jest z pamięci skompilowana wersja metody i wymuszone jest jej przekompilowanie od zera ze zmienionym IL codem.

Możesz nadal zrobić to "po staremu", czyli nacisnąć pauzę a potem "Kontynuuj", wtedy kod nawet aktualnie wykonywanej metody się zaktualizuje

0

@obscurity: Dzięki, faktycznie masz pewnie rację :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1