02 April 2013

As promised in the previous post we’d like to share with some plans for the near (and more distant future).

There is definitely a ton of exciting stuff ahead!

It’s important to emphasize, that this project is owned by the community, and as such, the roadmap is also shaped by the community! After all, we want to make the C# scripting experience as smooth as possible for everyone.

Here are the major upcoming features.

Mono support

Thanks to the amazing work of Dale Ragan, we are closing in on Mono support. You can follow his fork to see the progress first-hand, and you can join the discussion on Github.

Nuget Package Installation

This has actually just made its way to the scriptcs dev branch. Since nuget.exe does not resolve nested dependencies when restoring packages from a packages.config, we have introduced Nuget installation built-in to scriptcs itself.

To install your NuGet packages along with their dependencies, you can simply run the following command in the same directory as your packages.config file:

 scriptcs -install

If there is anything else you’d like to see in this particular idea, let us now!

Extensibility (Script Packs)

Script Packs provide a way for 3rd parties to plug in their own framework and remove a lot of cruft for developers using them.

The entire extensibility model is designed around three core ideas:

  • Reference additional assemblies
  • Importing using statements
  • Surfacing globally-scoped objects to the script

While the extensibility model for scriptcs is pretty much complete, we are working on creating samples to showcase its usage. We plan to have an ASP.NET Web API sample out there very soon, as well as documentation on how to create your own script packs.

We think script packs will be a great addition for the community and we hope to see packs for all the popular third party frameworks i.e. Nancy, ServiceStack, Caliburn, etc.

Startup performance

Currently we perform a considerable amount of file IO when script gets executed. While for smaller scripts and low number of NuGet packages, it’s mostly not visible, it may become annoying for larger script-based solutions or applications.

We are now working on a set of performance improvements in that area. As always, any feedback is expected - the discussion is going on here.


We have started laying ground for a project that would allow you to create a Visual Studio solution directlz from your scriptcs script. In other words, you can start working on a script-based project, and if one day you decide it’s time to move to Visual Studio, this tool will facilitate it.

We are also working on allowing an export of your script to an executable (*.exe) which will allow you to share the script with people who wouldn’t have scriptcs installed.

scriptcs clean

If you want to share or move around your scriptcs project, all you really need are *.csx files and packages.config (and perhaps any custom non-NuGet assemblies if you use such).

However Nuget packages and bin folders are known to often weigh tens of megabytes. To improve this, we are introducing a clean command:

        scriptcs -clean

which will clean up the application folder of unnecessary files for you, making it easier to share/move your scriptcs. You can join the discussion on the topic here.

Exception handling/logging

As we are growing more mature, we (with help from @dschenkelman) are working on a better logging/tracing experience for scriptcs, as well as on a good error propagation model.

Lightweight configuration/opts

We are discussing several ways of a possible configuration model for scriptcs. This includes both the configuration of the scriptcs application itself, and the opts file to act as a shortcut to command line commands.

On a side note, we have already embraced PowerArgs for a smooth command line experience.

Unit tests

There have been a few requests about unit testing your C# scripts. We are investigating several potential solutions of allowing you to write and execute unit tests for *.csx files.

Stay tuned!

Tutorials & Distribution

We already have the nightly packages available at MyGet


however, we are closing in on a first (pre-release) NuGet drop! As part of that, we are planning on dedicating more time to documentation and tutorials, as these items come up often in Twitter conversations!

Going beyond CLI

We have ScriptCs.Core which can be used to build applications that host scriptcs outside of the command line.

We plan to make sure the API is well-documented, clean, and understandable, as well as, at some point, introduce some samples of consuming ScriptCs.Core.

Octopus Deploy support

Drawing Paul Stovell, the creator of Octopus Deploy has just announced that Octopus Deploy 1.5 supports scriptcs!

This is absolutely terrific news, and we’d like to thank Paul (who also contributed to scriptcs source) for being the first to officially embrace our platform!

Further scriptcs adoption

We have some more folks interested in adopting scriptcs in their solutions/tools. We think this is great and are really excited to see how it turns out!

Hopefully many other will follow!

blog comments powered by Disqus