Quiero un código que compila el código que está en mi TextBox (por ejemplo). Lo que quiero decir es que quiero compilar el código después de ejecutar el programa. ¿Cómo puedo hacer esto?Compilar código C# en la aplicación
Respuesta
Ver este artículo:
http://support.microsoft.com/kb/304655
Aquí está el código de ejemplo que proporcionan:
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
;
}
}
Como Aliostad ha mencionado en su respuesta, tenga cuidado con esta solución, sin embargo. Deberá asegurarse de que su código compilado termine en su propio AppDomain
, de lo contrario, experimentará pérdidas de memoria.
Ver esta pregunta relacionada sobre cómo cargar el código en un separada AppDomain
:
How can I prevent CompileAssemblyFromSource from leaking memory?
Sólo tenga cuidado, cualquier código compilado y cargado no se puede descargar. Esto puede causar pérdida de memoria, es decir, si alguien sigue escribiendo y cambiando el código y compilándolo, los ensamblajes se cargan y finalmente se quedará sin memoria.
Una solución es crear un segundo AppDomain y cargar el ensamblado ahí y, cuando no sea necesario, descargar el AppDomain.
¿No has visto mis comentarios? – Aliostad
+1 para segundo AppDomain –
- 1. Compilar y ejecutar código fuente desde la aplicación Java
- 2. cómo compilar código no seguro en C#
- 3. cómo compilar/compilar la aplicación ndk?
- 4. AVR Studio 5: Código de compilar C++
- 5. socklen_t no declarados al compilar código .c
- 6. Compilar código C# desde la línea de comandos da error
- 7. Directorios dSYM al compilar el código C++ en MacOS
- 8. compilar OpenCV en C++
- 9. Cuándo usar Cygwin o MinGW para compilar el código C?
- 10. ¿Cómo compilar la aplicación C# con la biblioteca estática de C++?
- 11. Cómo compilar la aplicación Sandboxed sin XCode?
- 12. ¿Cómo puedo compilar y vincular código C++ con código C compilado?
- 13. Compilar C++ con Cygwin
- 14. ¿Es posible compilar dinámicamente y ejecutar fragmentos de código C#?
- 15. Error al compilar un código simple de C++
- 16. Código de C++ en la aplicación de iPhone
- 17. ¿Cómo compilar código objc en Linux?
- 18. Cómo compilar código VB6 heredado
- 19. Compilar C# en el objetivo-C
- 20. ¿La configuración de la plataforma al compilar una aplicación C# marca la diferencia?
- 21. Compilar la extensión del código C# en el tiempo de ejecución
- 22. ¿Qué sucede con el código JavaScript después de compilar la aplicación utilizando Titanium Mobile?
- 23. ¿Cómo compilar y ejecutar código dinámicamente?
- 24. ¿La forma más rápida de compilar una aplicación Symbian simple?
- 25. Generar, compilar y usar código Java en tiempo de ejecución?
- 26. Compilar programa en C++ en Mac para funcionar en Linux
- 27. Una forma de compilar la biblioteca C en .Net dll?
- 28. ¿Se puede compilar un código groovy para ejecutar en JRE?
- 29. Cómo compilar ocaml al código nativo
- 30. ¿Cómo compilar C++ en Ubuntu Linux?
No pensé que podría ser tan fácil ... ¡guau! +1 para su respuesta – Marco
Por cierto, este ejemplo de código solo se edita mínimamente. Yo personalmente usaría un 'StringBuilder' en ese bucle de mensaje de error, y sobrescribiría el texto del cuadro de texto en lugar de anexarlo. –