2012-10-09 14 views
6

Eventuali duplicati:
Best way to call Managed .NET code from Unmanaged codeC# come linguaggio di scripting

Sono curioso di sapere se avrei potuto utilizzare C# come linguaggio di scripting ospitato in un C++ nativo dell'applicazione. Ho lavorato al mio motore di gioco per 5 anni, ma non ho mai toccato l'aspetto dello scripting. Mi piace come in Unity posso scrivere script C# per i diversi oggetti nel gioco.

Ho eseguito alcune ricerche ma non sono riuscito a trovare nulla di effettivo.

Si noti che la mia domanda non è correlata a .Net ma a C# come lingua generale.

Giusto per essere sicuro, lo dirò: non voglio chiamare C++ nativo da C#. Lo voglio al contrario.

Se qualcuno potesse indicarmi alcune risorse lo apprezzerei.

+0

suoni fattibili, purché ci sia un'interfaccia gestita per ciò che si desidera chiamare. – Jodrell

+0

Penso che forse, [questo] (http://stackoverflow.com/questions/1832293/c-sharp-scripting-language) è una soluzione migliore rispetto al duplicato suggerito. Anche se non direi che è un duplicato esatto –

+2

C# non è davvero progettato per essere un linguaggio di scripting. Hai considerato (se possibile) utilizzando JavaScript? Cerca nel motore V8 di Google (che credo sia già C++) e puoi agganciare oggetti C++ nativi da JavaScript ... Certamente JavaScript è progettato per il web, ma può essere adattato ad altre applicazioni. – series0ne

risposta

5

Sì, ciò che si vuole fare è ospitare il CLR nel proprio App. Ecco un articolo MSDN che lo esamina.

http://msdn.microsoft.com/en-us/magazine/cc301479.aspx

L'autore di questo articolo ha anche un libro fuori che copre tutti gli aspetti di essa. Una volta ottenuto il CLR attivo e in esecuzione nella tua app, se si desidera lo scripting vero, è necessario compilare in modo dinamico il codice e cirrus ha fornito alcuni collegamenti su come farlo.

Avrete inevitabilmente anche bisogno di esporre parti della vostra app principale nello spazio dei nomi CLR. Altrimenti, non sarai in grado di accedere a nessuna delle caratteristiche specifiche dell'app di hosting principale.

EDIT: Quando dico "true scripting", intendo che stai usando i file di testo con estensione .cs per i tuoi script in fase di runtime. Sarebbe più efficiente compilare quelli in anticipo e quindi includere la DLL con l'app ospitata, tuttavia è possibile farlo in entrambi i modi.

+1

Collegamento a documenti CLR Hosting Center: http://msdn.microsoft.com/en-us/library/dd380850.aspx – PaulPerry

0

Si potrebbe voler guardare le fonti di CSRepl di Rickard Nilsson. È un interprete interattivo C#. Non ospita CLR, dal momento che è gestito, ma crea ambiente di script C#.

Problemi correlati