このように.NET Core/.NET 5以降ではファイナライザの実行が保証されない場合があるため、代替手段としてAssemblyLoadContext.Unloadingイベントが追加されています。 実装したい終了処理がクリティカルな場合は、このイベントを捕捉し、そこで終了処理を行うようにする必要があります。 特に、プロセス終了とともに自動的に解放されないようなリソースを扱う場合は、ファイナライザではなくAssemblyLoadContext.Unloadingイベントで解放処理を行う必要があります。

AssemblyLoadContext.Unloadingイベントを捕捉して終了処理を行う .NET Standard 1.6/.NET Core 2.0
Imports System
Imports System.Runtime.Loader

Class Sample
  Shared Sub Main()
    ' AssemblyLoadContext.Unloadingイベントで必要な終了処理を行う
    AddHandler AssemblyLoadContext.GetLoadContext(GetType(Sample).Assembly).Unloading, Sub(ByVal ctx As AssemblyLoadContext)
      Console.WriteLine("unload")
    End Sub

    Console.WriteLine("end")
  End Sub
End Class