Delay's Blog is the blog of David Anson, a Microsoft developer who works with C#, XAML, HTML, and Azure.
This blog has moved to a new location and comments have been disabled.
All old posts, new posts, and future comments can be found on The blog of dlaa.me.
See you there!
CSI is a simple C# interpreter and has been available for .NET 1.1, 2.0, 3.0, and 3.5 for a while now. Earlier this year, I updated CSI for .NET 4 Beta 2, and now I've (somewhat belatedly) updated it for the final, public .NET 4 Framework. Today's post is mainly about getting an official .NET 4 RTM-compiled build of CSI released, so there aren't any functional changes to the tool itself.
FYI: I have a TODO list and there are some interesting things on it - it's just that none of them seemed particularly urgent.
The links above explain what CSI is and how it works; the executive summary is that CSI offers an alternative to typical CMD-based batch files by enabling the use of the full .NET framework and stand-alone C# source code files for automating simple, repetitive tasks. It accomplishes that by compiling source code "on the fly" and executing the resulting assembly behind the scenes. The benefit is that it's easy to represent tasks with a simple, self-documenting code file that leaves no need to worry about compiling a binary, trying to keep it in sync with changes to the code, or tracking project files and remembering how to build everything.
[Click here to download CSI for .NET 4.0, 3.5, 3.0, 2.0, and 1.1 - along with the complete source code and test suite.]
Here's the "read me" file for a slightly better idea of how CSI works:
== CSI: C# Interpreter ==
== David Anson (http://blogs.msdn.com/b/delay/) ==
CSI: C# Interpreter
Version 2010-06-07 for .NET 4.0
Enables the use of C# as a scripting language by executing source code files
directly. The source code IS the executable, so it is easy to make changes and
there is no need to maintain a separate EXE file.
CSI (CodeFile)+ (-d DEFINE)* (-r Reference)* (-R)? (-q)? (-c)? (-a Arguments)?
(CodeFile)+ One or more C# source code files to execute (*.cs)
(-d DEFINE)* Zero or more symbols to #define
(-r Reference)* Zero or more assembly files to reference (*.dll)
(-R)? Optional 'references' switch to include common references
(-q)? Optional 'quiet' switch to suppress unnecessary output
(-c)? Optional 'colorless' switch to suppress output coloring
(-a Arguments)? Zero or more optional arguments for the executing program
The list of common references included by the -R switch is:
CSI's return code is 2147483647 if it failed to execute the program or 0 (or
whatever value the executed program returned) if it executed successfully.
CSI Example.cs -r System.Xml.dll -a ArgA ArgB -Switch
CSI ExampleA.cs ExampleB.cs -d DEBUG -d TESTING -R
CSI was inspired by net2bat, an internal .NET 1.1 tool whose author had left
Microsoft. CSI initially added support for .NET 2.0 and has now been extended
to support .NET 3.0, 3.5, and 4.0. Separate executables are provided to
accommodate environments where the latest version of .NET is not available.
Update .NET 4 (RTM) version
Make .NET 4 version primary
Add .NET 4 (Beta 2) version
Initial public release
Initial internal release