Un mese fa avevo scritto due post (questo e questo) su programmi vuoti in C#. Oggi vorrei completare il quadro anche per altri linguaggi .NET, con il tabellone qui sotto che spero parli un po' da sé. Non sono riuscito a individuare le opzioni giuste per il compilatore Visual C++ (cl.exe) (con i vostri commenti magari riuscirò a completare la tabella anche per C++ e, perché no, per altri linguaggi .NET).
Quattro commenti soltanto: 
- in Visual C# .NET non c'è bisogno di referenziare assembly che supportino
  la compilazione e la generazione di codice (come "Microsoft.VisualBasic.dll",
  "vjscor.dll", "Microsoft.JScript.dll");
- Visual Basic .NET referenzia l'assembly "Microsoft.VisualBasic.dll"
  senza utilizzarlo;
- sorprendentemente, la dimensione dell'assembly per JScript .NET (3584 byte) è ben inferiore alla dimensione dell'assembly per J# .NET (20480 byte), pur corrispondendo a un codice IL ben più lungo (sabotage Java? - scherzo);
  lo stesso si verifica con Visual Basic .NET (2560 byte) se confrontato con
  Visual C# .NET (3072 byte) - non mi aspettavo :-)
- il compilatore JScript .NET addiritura genera una classe, dal nome "JScript 0" (attenzione allo spazio bianco!).
(Aggiornamento 07/11/04): Grazie a Corrado
per la parte VB.
| Linguaggio .NET | Compilatore | IL | Dimensione DLL in byte | 
| IL | ilasm | .module fooil.DLL .imagebase 0x00400000
 .subsystem 0x00000003
 .file alignment 512
 .corflags 0x00000001
 | 1536 | 
| Visual C# .NET | csc | 
| .assembly extern mscorlib {
 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
 .ver 1:0:5000:0
 }
 .assembly foocs
 {
 .hash algorithm 0x00008004
 .ver 0:0:0:0
 }
 |  
| .module foocs.dll .imagebase 0x00400000
 .subsystem 0x00000003
 .file alignment 512
 .corflags 0x00000001
 |  | 3072 | 
| Visual Basic .NET | vbc | 
    
      | .assembly  extern mscorlib {
 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
 .ver 1:0:5000:0
 }
 |  
      | .assembly  extern Microsoft.VisualBasic {
 .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )
 .ver 7:0:5000:0
 }
 |  
      | .assembly foovb {
 .hash  algorithm 0x00008004
 .ver 0:0:0:0
 }
 |  
      | .module foovb.dll .imagebase 0x00400000
 .subsystem 0x00000002
 .file  alignment 512
 .corflags 0x00000001
 |  | 2560 | 
| J# .NET | vjc | 
| .assembly extern vjscor {
 .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )
 .ver 1:0:5000:0
 }
 |  
| .assembly extern mscorlib {
 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
 .ver 1:0:5000:0
 }
 .assembly fooj
 {
 |  
| .custom instance void [vjscor]com.ms.vjsharp.cor.VJSharpAssemblyAttribute::.ctor(valuetype [vjscor]com.ms.vjsharp.cor.VJSharpAssemblyGeneratorType, string) = ( 01 00 00 03 31 2E 30 00 00 )
 |  
| .hash algorithm 0x00008004 .ver 0:0:0:0
 }
 |  
| .module fooj.dll .imagebase 0x00400000
 .subsystem 0x00000003
 .file alignment 4096
 .corflags 0x00000001
 |  | 20480 | 
| JScript .NET | jsc | 
| .assembly extern Microsoft.JScript {
 .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )
 .ver 7:0:5000:0
 }
 |  
| .assembly extern mscorlib {
 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
 .ver 1:0:5000:0
 }
 .assembly foojs
 {
 |  
| .custom instance void [Microsoft.JScript]Microsoft.JScript.ReferenceAttribute::.ctor(string) = ( 01 00 4E 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72
 73 69 6F 6E 3D 31 2E 30 2E 35 30 30 30 2E 30 2C
 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C
 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E
 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38
 39 00 00 )
 |  
| .hash algorithm 0x00008004 .ver 0:0:0:0
 }
 |  
| .module 'JScript Module' .imagebase 0x00400000
 .subsystem 0x00000003
 .file alignment 512
 .corflags 0x00000001
 |  
| .class public auto ansi 'JScript 0' extends [Microsoft.JScript]Microsoft.JScript.GlobalScope
 {
 }
 .class public auto ansi 'JScript 0'
 extends [Microsoft.JScript]Microsoft.JScript.GlobalScope
 {
 .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGlobalScopeAttribute::.ctor() = ( 01 00 00 00 )
 .method public specialname rtspecialname
 instance void .ctor(class [Microsoft.JScript]Microsoft.JScript.GlobalScope A_1) cil managed
 {
 .maxstack 3
 IL_0000: ldarg.0
 IL_0001: ldarg.1
 IL_0002: dup
 IL_0003: ldfld class [Microsoft.JScript]Microsoft.JScript.Vsa.VsaEngine [Microsoft.JScript]Microsoft.JScript.ScriptObject::engine
 IL_0008: call instance void [Microsoft.JScript]Microsoft.JScript.GlobalScope::.ctor(class [Microsoft.JScript]Microsoft.JScript.GlobalScope,
 class [Microsoft.JScript]Microsoft.JScript.Vsa.VsaEngine)
 IL_000d: ret
 }
 .method public instance object 'Global Code'() cil managed
 {
 .maxstack 2
 IL_0000: ldarg.0
 IL_0001: ldfld class [Microsoft.JScript]Microsoft.JScript.Vsa.VsaEngine [Microsoft.JScript]Microsoft.JScript.ScriptObject::engine
 IL_0006: ldarg.0
 IL_0007: call instance void [Microsoft.JScript]Microsoft.JScript.Vsa.VsaEngine::PushScriptObject(class [Microsoft.JScript]Microsoft.JScript.ScriptObject)
 IL_000c: ldnull
 IL_000d: ldarg.0
 IL_000e: ldfld class [Microsoft.JScript]Microsoft.JScript.Vsa.VsaEngine [Microsoft.JScript]Microsoft.JScript.ScriptObject::engine
 IL_0013: call instance class [Microsoft.JScript]Microsoft.JScript.ScriptObject [Microsoft.JScript]Microsoft.JScript.Vsa.VsaEngine::PopScriptObject()
 IL_0018: pop
 IL_0019: ret
 }
 }
 |  | 3584 |