Si per SQL ci sei, al massimo crea una piccola classe per gestire connessione e dataset ... magari nel iDispose della classe ci piazzi la chiusura al Db e robe simili.

Per ngen mo ti spiego.

Come si usa?

ngen [options] [assemblyName |assemblyPath ]

Se si utilizza Ngen.exe per generare immagini native per un'applicazione in fase di installazione, è necessario specificare il nome del file dell'applicazione e i nomi di assembly completamente specificati dei file DLL a cui faceva riferimento l'applicazione al momento della compilazione.

Cosa fa?

L'esecuzione di Ngen.exe su un assembly consente di caricare ed eseguire l'assembly più rapidamente perché il codice e le strutture di dati vengono ripristinati dalla cache dell'immagine nativa anziché essere generati in modo dinamico.

Crei l' exe e poi ne fai l' immagine. Ogni volta che rigeneri la soluzione chiaramente devi ricreare l' immagine.
Lo trovi nella cartella SDK del framework e se usi Visual Studio ce l' hai per forza ...

Si usa da riga di comando (DOS)