Desidero del codice che compila il codice che è nel mio TextBox (ad esempio). Quello che voglio dire è che voglio compilare il codice dopo aver eseguito il programma. Come posso fare questo?Compilare codice C# nell'applicazione
risposta
si veda questo articolo:
http://support.microsoft.com/kb/304655
Ecco il codice di esempio che forniscono:
var codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
var parameters = new CompilerParameters()
{
GenerateExecutable = true,
OutputAssembly = Output,
};
CompilerResults results = icc.CompileAssemblyFromSource(parameters, sourceString);
if (results.Errors.Count > 0)
{
foreach(CompilerError error in results.Errors)
{
textBox2.Text = textBox2.Text
+ "Line number " + error.Line
+ ", Error Number: " + error.ErrorNumber
+ ", '" + error.ErrorText + ";"
+ Environment.NewLine + Environment.NewLine
;
}
}
Come Aliostad ha menzionato nella sua risposta, state attenti con questa soluzione, però. Dovrai assicurarti che il codice compilato finisca nel proprio codice AppDomain
, altrimenti si verificheranno perdite di memoria.
Vai a questa domanda relativa su come caricare il codice in un separato AppDomain
:
How can I prevent CompileAssemblyFromSource from leaking memory?
Basta fare attenzione, qualsiasi codice che viene compilato e caricato, non può essere scaricato. Ciò può causare la perdita di memoria , ad esempio se qualcuno continua a digitare e modificare il codice e lo compila, gli assembly vengono caricati e alla fine si esaurirà la memoria.
Una soluzione è quella di creare un secondo AppDomain e caricare l'assembly e quando non è necessario, scaricare AppDomain.
Non hai visto i miei commenti? – Aliostad
+1 per il secondo AppDomain –
- 1. Compilare estensione di codice C# a runtime
- 2. Compilare openmp in pthreads Codice C
- 3. Compilare codice C++ per AIX su Ubuntu?
- 4. Compilare C# nell'obiettivo-C
- 5. Come posso compilare e collegare il codice C++ con il codice C compilato?
- 6. Compilare C# in Nativo?
- 7. Come scrivere e compilare il codice Objective-C?
- 8. Makefile per compilare codice OpenCV in C++ su Ubuntu/Linux
- 9. Compilare il codice Python e collegarlo al programma C++?
- 10. Quando utilizzare Cygwin o MinGW per compilare il codice C?
- 11. Come compilare codice C++ 11 con android ndk ed eclipse?
- 12. Come compilare il codice C in Swift Framework
- 13. Come posso compilare manualmente il codice Cython che usa C++?
- 14. Come compilare il codice C++ 14 per Android?
- 15. Compilare il codice C ed esporlo a Swift sotto Linux
- 16. Compilare C in MIPS
- 17. compilare il codice JavaFX utilizzando ANT
- 18. Compilare in C++ 14
- 19. Come compilare a livello di codice un codice c da un codice C# usando il compilatore mingw32-gcc
- 20. Come compilare ed eseguire il codice dinamicamente?
- 21. Compilare lua incorporata in C
- 22. compilare C++ in programmi "reali"
- 23. Come compilare ocaml al codice nativo
- 24. Impossibile compilare il programma C++
- 25. Impossibile compilare codice sorgente aperto cv 2.3.1
- 26. Posso compilare Java nel codice nativo?
- 27. DEBUG condizionale - Compilare ancora nel codice RELEASE?
- 28. Come compilare il codice objc su Linux?
- 29. Come compilare il codice da stdin?
- 30. Come compilare codice non sicuro in VS2012
Non pensavo che potesse essere così facile ... wow !!! +1 per la risposta – Marco
BTW questo esempio di codice viene modificato solo in minima parte. Personalmente userò un 'StringBuilder' su quel ciclo di messaggi di errore, sovrascrivendo il testo della casella di testo piuttosto che aggiungendolo ad esso. –