Skip to content
C# scripting platform
C# Visual Basic .NET Other
Branch: master
Clone or download

Latest commit

Oleg Shilo
Oleg Shilo Release: v3.30.2
- Issue #189: Error "Cannot parse "//css_import..."" when referencing an assembly
- Issue #193: DirectoryNotFoundException(C:\ProgramData\CS-Script\ShellExtension) when fresh installing
Latest commit dcc39d5 Apr 27, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Source Release: v3.30.2 Apr 27, 2020
bin/linux/ubuntu - minor samples updates Oct 14, 2019
docs Fixed all urls pointing to the old web hosting Oct 12, 2019
.gitattributes - First revision of CS-Script.Core May 16, 2018
.gitignore Minor code cleanup Dec 5, 2018
LICENSE Update LICENSE Jan 18, 2018
README.md Update README.md Jan 25, 2020
appveyor.yml Preparing AppVeyor integration Nov 29, 2017
help.txt Release: v3.30.2 Apr 27, 2020

README.md

CS-Script

Build status Chocolatey Version Chocolatey Downloads NuGet version (CS-Script)

paypal

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 times (see stats).

* 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!");
You can’t perform that action at this time.