[Mono-devel-list] Interactive C# prompt

Elliott Draper el at eldiablo.co.uk
Tue Jul 19 11:39:02 EDT 2005

Colin JN Breame wrote:

>I'm wondering whether there is such a thing as an interactive C# prompt for 
>mono. e.g. where commands can be entered and executed one-by-one.
>If not, any ideas about how I would go about writting something like this?
>Mono-devel-list mailing list
>Mono-devel-list at lists.ximian.com

Are you referring to a way to execute small C# code statements and have 
them executed as if they were within a simple program, on the fly? 
Because if so, then you can use the classes and methods within 
System.CodeDom, specifically within System.CodeDom.Compiler, to compile 
and execute code. So you can take a command such as 
"string.Compare("test","testing")" from a prompt, build it up into a 
simple class with an entry point, use an ICodeCompiler object (which one 
depends on which language) to compile the code, and then execute the 
assembly in memory, returning the result back to the prompt (without 
saving any of the code or binary assembly to file, truly on the fly). 
This leaves you with a basic eval prompt for running simple statements, 
in whatever .Net language you choose to support using different 
ICodeCompiler's. You could ofcourse get as complicated as you like in 
building up the program to execute, depending on how much information 
you want to let the user enter straight from the command line, from 
simple statements to full code blocks.

I have actually started working on a DotNet/Mono written shell named 
xSh, for both Windows and Linux, and one of the plugins I'm going to 
incorporate will be a simple C# code evaluator for running simple 
functions and simple bits of code off the command line. I hope to have a 
beta release out fairly soonish.

If this was what your after and you'd like more info, or a code sample, 
just let me know.

Oh and if I'm way off base and this isn't what you wanted... then ignore 
my ramblings :-)

-= El =-

More information about the Mono-devel-list mailing list