2009-03-23 10 views
17

Scriverò una piccola applicazione desktop per un client con macchine WinXP e non installeranno il framework .NET (almeno non per me).Compilazione statica nel mondo .NET

Quindi le mie scelte sono limitate a C++ o VB6, nessuna delle due sembra ottima. Ricordo di aver letto nel giorno in cui Mono ha inventato un compilatore statico, ma di recente l'unica cosa che ho trovato è la voce di Miguel de Icaza sulla compilazione statica per un motore di gioco ai fini dell'esecuzione dell'app su iPhone - non è quello Avevo in mente

Esistono prodotti gratuiti o commerciali che mi consentano di compilare staticamente la mia app Winnet 3.5.

Grazie

+2

Mi chiedo chi potrebbe votare questa domanda. Includere staticamente il runtime sarebbe fantastico. –

+1

Sembra che alcune domande vengano respinte senza alcun motivo ovvio, le persone che lo fanno non lasciano mai un commento, quindi siamo lasciati a graffiare le nostre teste –

+0

Cosa c'è di sbagliato nell'installare .NET per loro? Includilo nell'installer. –

risposta

11

Si può provare a utilizzare Remotesoft Salamander.

Non esattamente quello che vuoi.

+3

... per un sovrapprezzo molto grande ... –

8

Mono ha notevolmente migliorato il suo supporto per la compilazione Ahead of Time (AOT) al punto che, supponendo che si desideri/siano in grado di indirizzare Mono piuttosto che il runtime .Net, dovrebbe essere possibile compilare staticamente qualsiasi applicazione CIL .

Se questa è una buona idea complessiva dipende interamente dall'applicazione e dai vincoli.

Ad esempio, Novell ora fornisce MonoTouch, un'implementazione CLI completamente compilata e collegata per consentire alle applicazioni .Net (non solo ai giochi) di funzionare su iPhone rispetto al framework CocoaTouch.

Queste stesse tecniche AOT possono essere utilizzate per compilare un'applicazione Winforms che non richiede il runtime .Net o Mono come prerequisiti. Ci sono molti compromessi in termini di prestazioni (sia positivi che negativi) legati all'AOT, quindi non andrei avanti senza due diligence.


Edit:

In risposta alla domanda di John Saunders' in materia di "perché non basta installarlo per loro?". Questo in effetti mostra una ragione per cui potresti aver bisogno della compilazione AOT. Bootstrappers.

Per installare qualsiasi cosa, è necessario eseguire un file eseguibile. È possibile distribuire un MSI (che lancerà implicitamente msiexec.exe) oppure è possibile distribuire un exe. MSI, anche se funzionale, è un'esperienza di sviluppo piuttosto terribile. Quindi puoi creare il tuo bootstrapper usando .NET (AOT compilato elimina la dipendenza di runtime) che installa qualsiasi prerequisito necessario (come .NET) prima di installare la tua app.

Inoltre, alcune società potrebbero dover spedire file eseguibili scaricabili che non richiedono agli utenti di installare nulla (in silenzio o in altro modo).

Ancora un altro: l'installazione di .NET richiede privilegi amministrativi. AOT può consentire di aggirare tale requisito per la propria applicazione.

Anche in questo caso, una buona idea dipende interamente dall'applicazione e dai vincoli.

+1

+1 La tua risposta è stata molto costruttiva! –