Harsh Gupta Harsh Gupta - 1 month ago 14
C# Question

What are .CSX C# files for?

I've heard of .cs files but never of .csx files. Google searches led me to CSX corporation and other unwanted bodies. Can someone provide a terse description of what a CSX file is, and perhaps the main differences between CSX and CS?

Answer

It is a C# Script File introduced with Roslyn:

C# Script File (.csx) Editing Support: The CTP introduces a concept of a C# Script File. You can create a .csx file [...]

You don't have to have everything in a class and method, a csx file is like it's own method, and everything in the file will be executed on start. It also supports some additional directives (like #load to load another script).

The Scripting Api provided in Roslyn, while being promising, has some severe flaws:

Scripting APIs require desktop .NET Framework 4.6+.

  • It means it was not cross-platform. (but with .NET Core, now it should be).
  • The syntax of C# is not really script oriented (too verbose)
  • The directives available while mandatory are not sufficient to cover the broad scope of a CLI (like powershell). For exemple, there is no cd, alias, pwd, ls, exec or the like.

There are several scripting engine which are based on it (or on the underneath Roslyn) or at least on the same format, while providing more advanced directives. So, it means a csx file should run on one of the following:

Beware, event if they share a common base, they are not cross-compatible, since there is no standard on the extensions they implement