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: Visual Studio, VSCode, Sublime Text 3, Notepad++.
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 times.
* 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.
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!");