CS-Script 3.20.0


Pre- and Post-execution scripts


Quite often it is desirable to perform certain actions before and/or after the script execution. Such actions can be virtually anything (copying files, executing certain applications, setting environment variables, interacting with user etc.).

CS-Script allows such actions to be specified directly in the code in a form of pre- and post-execution scripts. It means that, when composing the script (main script), you can specify any other C# script to be executed prior to or after the main script execution.
Having the pre- and post-execution actions implemented as scripts (pre- and post-scripts) gives developers a great level of flexibility. These are just some a few examples of what you can do using this approach:
The way how pre- and post-scripts are specified in the code is similar to the one used for imported scripts or referenced assemblies:
//css_prescript file([arg0][, arg1]..[,arg2])[ignore];
//css_postscript file([arg0][, arg1]..[,arg2])[ignore];
file - script file (extension is optional)
arg0..N - script string arguments
ignore - continue execution of the main script even in case of exception in the pre-/post-script

If the string $this (or $this.name) is specified as arg0..N it will be replaced at execution time with the main script full name (or file name only).
The shorter alias directives //css_pre and //css_post can be used in place of the //css_prescript and //css_postscript respectively.
Note:
All pre- and post-scripts are executed within the same address space as the main script.

The concept of pre- and post-script is the key component of the COM and Web Service "single-line access" implementation. This functionality of the CS-Script allows to interface the Web Services and COM objects with just a single line of code. No manual steps for importing type libraries or executing the wsdl.exe are required. All can be done in the background as a pre-execution action (see Using COM and CS-Script and Web Services for details).  

Remember that you may need to escape some path characters that conflict with the //css_ delimiters. See Delimiters Escaping section.

Example 

This is the example of the script, which sets the environment variable greeting to "Hello!":

using System;

class Script
{
    static public void Main(string[] args)
    {
        if (args.Length > 0)
            Console.WriteLine("Setting environment variable for "+
        System.IO.Path.GetFileName(args[0])+"...");
        Environment.SetEnvironmentVariable("greeting""Hello!");
    }
}

Now the value of the environment variable greeting is available for any script, which uses setEV.cs file as a pre-script.  This is an example of such script (script.cs):

//css_prescript setEV($this);
using System;

class Script
{
    static public void Main(string[] args)
    {
        Console.WriteLine(Environment.GetEnvironmentVariable("greeting"));
    }
}

Output 



See Also 

Using COM | CS-Script and Web Services