Referencing scripts

follesoe edited this page Mar 18, 2013 · 3 revisions

Loading referenced scripts

You can reference other scripts from your CSX script by using a #load directive.

Here is an example:

	#load "models.csx"
	#load "service.csx"
	
	using System;
	using ServiceStack.WebHost.Endpoints;
	using System.Reflection;
	
	public class AppHost : AppHostHttpListenerBase {
		public AppHost() : base("StarterTemplate HttpListener", Assembly.GetExecutingAssembly()) { }
	
		public override void Configure(Funq.Container container) {
			Routes
				.Add<Hello>("/hello")
				.Add<Hello>("/hello/{Name}");
		}
	}
	
	var port = "http://*:999/";
	var appHost = new AppHost();
	appHost.Init();
	appHost.Start(port);
	
	Console.WriteLine("listening on {0}", port);
	Console.ReadKey();

This allows you to split your script into smaller maintainable bits or simply place common classes into separate CSX file (and even reuse between different applications). The principles here are exactly the same as including JavaScript files in JS applications.

Usage

  • #load can only be placed at the top (before first using statement or code line) of your CSX file.
  • if you place #load inline out script pre-processor will simply exclude it. This is in-line with C# REPL/C# Interactive Window behavior.
  • #load accepts both relative and absolute paths.

#load is not a scriptcs invention, but rather a C# REPL standard. As a consequence of this, if you have Roslyn CTP installed and you use C# Interactive Window, you can copy paste you CSX file there and the #load directive will be correctly recognized.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.