Domanda

Vorrei distribuire i miei programmi .NET senza .NET framework. È possibile compilare un programma .NET in codice macchina?

È stato utile?

Soluzione

Sì, è possibile precompilare utilizzando Ngen.exe, tuttavia ciò non rimuove la dipendenza CLR.

Devi comunque spedire anche gli assembly IL, l'unico vantaggio di Ngen è che la tua applicazione può avviarsi senza invocare JIT, in modo da ottenere un tempo di avvio molto rapido.

Secondo CLR Via C #:

  

Inoltre, gli assembly sono stati precompilati utilizzando   Di solito, Ngen è più lento di JIT   si assembla perché il compilatore JIT   può ottimizzare alla macchina target   (32 bit? 64 bit? Registri speciali?   ecc.), mentre NGEN produrrà solo a   compilazione di base.

EDIT:

C'è qualche dibattito sulle informazioni di cui sopra da CLR Via C #, poiché alcuni dicono che è necessario eseguire Ngen sul computer di destinazione solo come parte del processo di installazione.

Altri suggerimenti

Remotesoft ne ha uno: Salamander .NET Linker

Non ho alcuna esperienza con esso.

Esistono alcuni strumenti di terze parti che lo fanno, ad esempio

Un altro prodotto (costoso e proprietario, a partire da $ 1599) che può fare questo è Xenocode Postbuild . Non l'ho usato da solo però, con un costo per il prodotto nazionale lordo di un piccolo paese africano e tutti ...

  

È possibile compilare il codice .NET IL   al codice macchina?

Sì, ma .NET Framework lo fa per te in fase di esecuzione (impostazione predefinita) o al momento dell'installazione (ngen). Tra le altre ragioni, questo IL - > il codice macchina viene eseguito separatamente su ogni macchina di installazione in modo che possa essere ottimizzato per quella macchina specifica.

  

Vorrei distribuire il mio .NET   programmi senza il framework .NET.   È possibile compilare un .NET   programma per codice macchina?

No, a tutti gli effetti non puoi farlo. Le soluzioni alternative di terze parti potrebbero funzionare in alcuni scenari, ma a quel punto non lo prenderei davvero in considerazione "codice gestito" o " .NET " più.

Sì, ora puoi! Recentemente Microsoft ha annunciato .NET Native , una tecnologia che compila la tua applicazione con .NET Native runtime (lo chiamano MRT) in un binario (in realtà un eseguibile e una libreria dinamica).

Vedi link: http: //blogs.msdn .com / b / dotnet / archive / 2014/04/02 / annunciando-net-native-preview.aspx http://blogs.msdn.com/b /dotnet/archive/2014/04/24/dotnetnative-performance.aspx

Esiste IL2CPU per la parte della compilation.

Non penso che sia possibile. È possibile creare un assembly pre-assemblato ma è comunque necessario il framework.

Se ti preoccupi solo delle dimensioni della distribuzione del Framework, potresti leggere su this .

Penso che non dovresti: questo è il compito del compilatore JIT.

Tuttavia, è possibile utilizzare ClickOnce o Windows Installer per distribuirlo in modo che il framework mancante non sia un grosso problema: si potrebbe dire al programma di installazione di scaricare il Framework e installarlo.

Guarda il progetto MONO: comando mono con l'opzione --aot. http://www.mono-project.com/AOT

Ho sempre pensato che sarebbe bello compilare c # in codice macchina direttamente senza la dipendenza CLR ....

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top