C# is the Main problem
C# Interactive Window
Open the C# Interactive Window (View &gt; Other Windows &gt; C# Interactive in Visual Studio 2015). I suppose not all IDEs will have this.
This approach executes C# in the Interactive Window in order to create a C# exe that prints the desired string without the author ever writing main. As a bonus, the exe's IL also does not contain main.
Run the following code in the Interactive Window
using System.Reflection;
using System.Reflection.Emit;
var appMeow = (dynamic)System.Type.GetType(&quot;System.AppDom&quot; + &quot;ain&quot;).GetProperty(&quot;CurrentDom&quot; + &quot;ain&quot;, BindingFlags.GetProperty | BindingFlags.Static | BindingFlags.Public).GetValue(null);
var asmName = new AssemblyName(&quot;MEOW&quot;);
var asmBuilder = appMeow.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave);
var module = asmBuilder.DefineDynamicModule(&quot;MEOW&quot;, &quot;MEOW.exe&quot;);
var typeBuilder = module.DefineType(&quot;Meow&quot;, TypeAttributes.Public);
var entryPoint = typeBuilder.DefineMethod(&quot;EntryPoint&quot;, MethodAttributes.Static | MethodAttributes.Public);
var il = entryPoint.GetILGenerator();
il.Emit(OpCodes.Ldstr, &quot;Meow() is the meow method of C# programs!&quot;);
il.Emit(OpCodes.Ldstr, &quot;eow&quot;);
il.Emit(OpCodes.Ldstr, &quot;ain&quot;);
il.EmitCall(OpCodes.Call, typeof(string).GetMethod(&quot;Replace&quot;, new[] { typeof(string), typeof(string) }), null);
il.EmitCall(OpCodes.Call, typeof(Console).GetMethod(&quot;Write&quot;, new[] { typeof(string) }), null);
il.Emit(OpCodes.Ret);
var type = typeBuilder.CreateType();
asmBuilder.SetEntryPoint(type.GetMethods()[0]);
asmBuilder.Save(&quot;MEOW.exe&quot;);

Use Environmnent.CurrentDirectory to see where the exe was created. Run it to observe the desired output.

Resulting IL: