This repository is a resting place for the obsolete codebase targeting .NET Framework. The releases after May 30, 2020 target .NET Core/5.
All main stream releases are available from https://github.com/oleg-shilo/cs-script/releases
This repository is only intended for hosting the historical codebase and potential branched/parallel releases for .NET Framework even though the chances for such releases are very small.
CS-Script is a CLR based scripting system which uses ECMA-compliant C# as a programming language.
CS-Script is one of the most mature C# scripting solutions. It became publicly available in 2004, just two years after the first release of .NET. And it was the first comprehensive scripting platform for .NET
CS-Script supports both hosted and standalone execution model. This makes it possible to use the script engine as a pure C# alternative for PowerShell. As well as extending .NET applications with C# scripts executed at runtime by the hosted script engine.
CS-Script allows seamlessly switching underlying compiling technology without affecting the code base. Currently supported compilers are Mono, Roslyn and CodeDOM.
CS-Script also offers comprehensive integration with most common development tools:
It can be run on Win, Linux and Mac. And it is compatible with .NET, Mono and .NET Core.
Over the long history of CS-Script it has been downloaded through Notepad++ x86 plugin manager alone over 
* statistics does not include x64 downloads nor downloads after Notepad++ discontinued shiping editor with the plugin manager x86 included
For the all CS-Script details go to the project Documentation Wiki.
For the roadmap for .NET 5 development see this article.
The following is a simple code sample just to give you the idea about the product:
Executing script from shell
Updating media file tags. Note, the script is using optional classless layout.
Script file: mp4_retag.cs
//css_nuget taglib using System; using System.IO; string source = @"\\media-server\tv_shows\Get Smart\Season1"; void main() { foreach (string file in Directory.GetFiles(source, "*.mp4")) { string episode_name = Path.GetFileNameWithoutExtension(file); var mp4 = TagLib.File.Create(file); mp4.Tag.Title = episode_name; mp4.Save(); Console.WriteLine(episode_name); } }
Execute script file directly in cmd-prompt without building an executable assembly:
C:\Temp>cscs mp4_retag.cs
Hosting script engine
dynamic script = CSScript.LoadCode( @"using System.Windows.Forms; public class Script { public void SayHello(string greeting) { MessageBox.Show(""Greeting: "" + greeting); } }") .CreateObject("*"); script.SayHello("Hello World!"); //----------------- var product = CSScript.CreateFunc<int>(@"int Product(int a, int b) { return a * b; }"); int result = product(3, 4); //----------------- var SayHello = CSScript.LoadMethod( @"using System.Windows.Forms; public static void SayHello(string greeting) { MessageBoxSayHello(greeting); ConsoleSayHello(greeting); } static void MessageBoxSayHello(string greeting) { MessageBox.Show(greeting); } static void ConsoleSayHello(string greeting) { Console.WriteLine(greeting); }") .GetStaticMethod("*.SayHello" , ""); SayHello("Hello again!");

