C#:
	
	class Initializer
{
    // The static ctor runs before the module initializer
    static Initializer() => Console.WriteLine("Initializer.cctor");
    [ModuleInitializer]
    public static void Initialize1() => Console.WriteLine("Module Initializer 1");
    [ModuleInitializer]
    public static void Initialize2() => Console.WriteLine("Module Initializer 2");
}
class StartupHook
{
    static StartupHook() => Console.WriteLine("StartupHook.cctor");
    // Start the application with the environment variable
    // DOTNET_STARTUP_HOOKS=myapp.dll (use full path to the assembly)
    public static void Initialize() => Console.WriteLine("Startup hook");
}
class Program
{
    static void Main() => Console.WriteLine("Hello, World!");
}
	
	src - https://www.meziantou.net/executing-code-before-main-in-dotnet.htm