2009-06-18 13 views
7

Ho sempre avuto questo sogno di creare un "vero exe" da un linguaggio di scripting. Con la disponibilità di implementazioni basate su DLR di Python e Ruby, è possibile avvicinarsi alla realtà?Iron Python/Iron Ruby EXE

Mi piacerebbe creare un 'applicazione reale':

  • Un Windows Forms App
  • una console App
  • Un servizio di Windows

E avere l'unità di distribuzione essere un exe compilato.

È possibile? O MS ha appena creato degli interpreti di file di script basati su .NET?

Se stai facendo questo, come stai strutturando le tue applicazioni/progetti? Stai usando un ibrido di codice C# e DLR?

risposta

4

Un progetto IronPython o IronRuby può essere compilato in una DLL o eseguibile bene e sarà 'reale' eseguibile in ogni modo con il a condizione che la persona che li esegue abbia il framework .Net e le dipendenze pertinenti installati (le dipendenze possono essere presenti nella stessa directory per impostazione predefinita, ma il framework deve essere installato). L'integrazione con Visual Studio non è ancora presente ma i progetti come IronPythonStudio utilizzano la VS Shell libera con buoni risultati. L'esistenza del DLR come dipendenza per C# dynamic in VS 2010 dovrebbe significare che l'integrazione con VS dai gruppi Iron * diventa un obiettivo più semplice e una priorità più alta.

Il risultato è in alcun modo interpretato (CIL è jitted in codice macchina in fase di esecuzione o tramite NGEN se desiderato) e taluni aspetti della DLR significano alcune azioni sono differiti in modo simile a latebinding ma più potente e fondamentalmente con alcuni sofisticati meccanismi di caching per consentire a questo di essere relativamente veloce rispetto agli interpreti ingenui.

Molti linguaggi di scripting tradizionalmente interpretati stanno creando le proprie strategie di compilazione basate VM o quelli leva esistenti (come la JVM, il CLR .NET o quelli aperti come il LLVM), in quanto questo porta a significativi incrementi di prestazioni in molti casi comuni.

Nel caso delle lingue Iron *, il vantaggio del MS CLR come base è che gli eseguibili risultanti "funzionano correttamente" nella maggior parte delle installazioni della famiglia OS più comune. Contrasto con Java dove un file jar non è 'eseguibile' facendo clic su/o 'eseguendo' tramite la shell in molti sistemi operativi. Il rovescio della medaglia è che ciò riduce l'interoperabilità rispetto a una soluzione basata su JVM o LLVM in cui il supporto della piattaforma è più ampio ma, inevitabilmente, più diversificato nell'integrazione del SO.

+0

si può fornire la documentazione o di una procedura per questo?Non sembra che tu possa "File-> Nuovo progetto" Python in Visual Studio, quindi è richiesto un lavoro extra. – JoshRivers

+0

L'integrazione VS non è ancora presente (aggiungerò una nota a tale scopo) ma è possibile utilizzare http://www.codeplex.com/IronPythonStudio per ottenere un ambiente simile a VS (utilizza la shell VS ridotta come base) – ShuggyCoUk

+0

Qual è il metodo effettivo per ottenere il codice DLR compilato nei file eseguibili? Sono stato in grado di trovare il link nella risposta qui sotto, e sembra solo fare riferimento al codice beta. – JoshRivers

1

È possibile creare exe dal normale python utilizzando Py2Exe. Ma non dovrebbe esserci nulla che ti impedisca di creare exe con IronPython usando Visual Studio o SharpDevelop

-1

anche se non direttamente legate al ferro * domanda, potrebbe essere interessante per qualcuno che vuole i binari da script python: pyinstaller

funziona sotto Windows (32-bit e 64-bit), Linux (32-bit e 64- bit) e Mac OS X (32-bit)

opere sotto qualsiasi versione di Python da 1,5 fino a 2,7

+1

non ha * * a che fare con la domanda – oma

+0

se leggi la prima frase del post di domanda, vedrai cosa ha a che fare il mio post con la domanda ... – Matus