csharplang VS dotnet-script

Compare csharplang vs dotnet-script and see what are their differences.

csharplang

The official repo for the design of the C# programming language (by dotnet)
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
csharplang dotnet-script
280 24
12,139 2,922
1.0% 0.8%
9.8 7.5
3 days ago 8 months ago
C# C#
- MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

csharplang

Posts with mentions or reviews of csharplang. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2025-05-20.
  • "ZLinq", a Zero-Allocation LINQ Library for .NET
    5 projects | news.ycombinator.com | 20 May 2025
    Sadly expression trees got out of love in modern .NET and it remains to be seen how much they will ever improve them.

    https://github.com/dotnet/csharplang/discussions/158

  • Why Tracebit is written in C#
    6 projects | news.ycombinator.com | 31 Jan 2025
    Here's the language proposal for those that are interested.

    https://github.com/dotnet/csharplang/issues/8928

  • The Untouched Goldmine of F#
    1 project | news.ycombinator.com | 16 Jan 2025
    C# has a much awaited and active proposal to add DUs to C# so I suspect C# will also support this once live (and continue its legacy of plucking great features from F#).

    https://github.com/dotnet/csharplang/blob/main/proposals/Typ...

  • The Monad Invasion - Part 3: Railway-Oriented Programming
    2 projects | dev.to | 15 Nov 2024
    We cannot blame Monads or ROP for this issue - it is a language limitation. In comparison, this is where a language like F# shines, as it allows us to define a discriminated union type that can carry multiple types of failures. Still, hope is possible - discriminated unions will eventually come to C#.
  • Sets, Types and Type Checking
    2 projects | news.ycombinator.com | 31 Oct 2024
    disjoint union vs union.

    Scala3 is the only programming language to implement both AFAIK.

    C# has a proposal to add both unions and disjoint unions: https://github.com/dotnet/csharplang/blob/main/proposals/Typ...

    OCaml has polymorphic variants which are open disjoint unions.

    Kotlin is looking to add union types for errors: https://youtrack.jetbrains.com/issue/KT-68296/Union-Types-fo...

    I believe Java's checked exceptions behave somewhat like union types.

  • A comparison of Rust's borrow checker to the one in C#
    14 projects | news.ycombinator.com | 30 Oct 2024
    There is a runtime (not C#) feature that has been added that is relevant to the article: ref fields in structs. Before these, only certain runtime-blessed types like Span could contain refs directly.

    In case anyone is interested, here is the spec about refs in structs and other lifetime features mentioned in the article:

    https://github.com/dotnet/csharplang/blob/main/proposals/csh...

    And here is the big list of ways .NET differs from the publish ECMA spec. Some of these differences represent new runtime features.

    https://github.com/dotnet/runtime/blob/main/docs/design/spec...

  • Net 9.0 LINQ Performance Improvements
    16 projects | news.ycombinator.com | 18 Oct 2024
    7 years ago: https://github.com/dotnet/csharplang/issues/1060

    3 years ago: https://github.com/dotnet/csharplang/blob/main/meetings/2021...

    I've given up submitting to csharplang now. It seemed like a positive when it was first open-sourced, but the proposals/issues are often just circular discussions that go nowhere. It doesn't feel (at least from the outside) that any proposal by a non-MS employee would make it thru the process unless MS needed it themselves. Which is what I was alluding to in my original post.

    I may well be wrong and maybe some proposals have made it through, but it feels like an illusion of community collaboration rather than actual community collaboration imho.

  • Why is F# code so robust and reliable?
    3 projects | news.ycombinator.com | 24 Sep 2024
    https://github.com/dotnet/csharplang/blob/main/proposals/Typ...
  • Discriminated unions in 2024
    4 projects | dev.to | 18 Sep 2024
    This means we rely on switch expressions rather than a Match function with lambdas for each case. Unfortunately, unlike lambdas, switch expressions don't allow blocks of code. However, we can emulate them like this:
  • .NET Digest #3
    2 projects | dev.to | 4 Sep 2024
    Type Unions for C#

dotnet-script

Posts with mentions or reviews of dotnet-script. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2025-05-28.
  • Dotnet Run App.cs
    16 projects | news.ycombinator.com | 28 May 2025
    > This feature is probably a big thing for .NET developer productivity. It's quite a shame, that it only came now.

    I am using https://github.com/dotnet-script/dotnet-script without any issues

  • Java in the Small
    9 projects | news.ycombinator.com | 18 Dec 2024
    It should be able to! F# has "gradual typing" and full type inference which means you often do not need to specify the types at all, and it also happens to be whitespace-sensitive language much like Python is. Both of these aspects should make it feel quite familiar while also giving you full advantages of static typing.

    One thing to note is I find `dotnet fsi {some script name}.fsx` taking more time to start than ideal - up to 800ms is just too much, normal .NET applications usually start in a fraction of this.

    I recently posted a submission for "FSharpPacker" that lets you compile F# scripts to standalone applications (either runtime-dependent, self-contained or fully native binaries, much like Go), it also has some comments on getting the best mileage out of it: https://news.ycombinator.com/item?id=42304835

    Probably the best feature that also comes with scripting (both C# and F#) is "inline" nuget references e.g. #r "nuget: FSharp.Control.TaskSeq" which will automatically pull the dependency from nuget without ever dealing with manually installing it or tinkering with build system in any other way.

    Some additional links:

    https://learn.microsoft.com/en-us/dotnet/fsharp/tools/fsharp...

    https://github.com/dotnet-script/dotnet-script (C# is also a quite productive language for scripting and small programs because of top-level statements, record types, pattern matching and many other functional features though perhaps not as strongly represented as in F#)

    https://github.com/waf/CSharpRepl

  • Jeffrey Snover and the Making of PowerShell
    9 projects | news.ycombinator.com | 4 Jul 2024
    Adding packages is `dotnet add {PackageName}`. That's it.

    Worrying about version compatibility for new projects has stopped being an issue long time ago. The package either targets NS2.0 or whatever latest LTS currently is, in which case you just add its reference, or it doesn't in which case you use something else.

    If it does, in 98% situations it just works. In the last 2% it has native dependencies which means either a) the package ships with binaries build for all popular platforms, b) the package adds a platform-specific dependent package automatically, or manually and mentions that in README, or c) the package comes with windows only native dll, which is happens with ancient poorly maintained packages, it's a rare case nowadays but it does happen.

    As someone whose primary PL is C#, I found https://github.com/waf/CSharpRepl and https://github.com/dotnet-script/dotnet-script far more accessible and useful. Compilation caching for the latter works relatively well to make startup latency tolerable.

    Or I just do `dotnet new console -o MyScriptName --aot`, echo code into Program.cs and `dotnet publish -o .` it. Some do that with Rust as well. Especially useful if you need your script to go through a lot of data quickly and parallelize that well too.

  • LINQPad – The .NET Programmer's Playground
    4 projects | news.ycombinator.com | 23 Jun 2024
  • Google ZX – A tool for writing better scripts
    8 projects | news.ycombinator.com | 9 Feb 2024
    Especially because these languages are only one package/install away and not two. I don‘t really get for which audience is targeted here. Usage in JS projects maybe, but then why not write it as npm tasks. ..

    I‘m playing around with dotnet-scripts [1] at the moment (C# shop mainly) and this has the same issue imho. The reason why I looked into it was because we have developers not accustomed to bash etc. I still find it silly and would rather use ruby so…

    [1] https://github.com/dotnet-script/dotnet-script

  • Simple PowerShell things allowing you to dig a bit deeper than usual
    6 projects | news.ycombinator.com | 22 Aug 2023
    >making powershell actually enjoyable to use

    My solution was to stop using it and instead use dotnet-script

    https://github.com/dotnet-script/dotnet-script

    Scripting with the full power of modern C# has been a huge win for me. And same/similar scripts will work on Windows/Linux/Mac. As my work language is C#, I don't have to context switch to another language for scripting.

  • REST API using C# .NET 7 with MySql
    6 projects | dev.to | 24 May 2023
    I usually create a container that has all database migrations and tool to execute those migrations. I name migrations as [yyyyMMdd-HHmm-migration-name.sql] but please feel free to use any naming scheme, keep in mind how the tool would order multiple files to run those migrations. I have also added a wait-for-db.csx file that I would use as the entry point for database migrations container. This is a dotnet-script file and would be run using dotnet-script. I have pinned the versions that are compatible with .net sdk 3.1 as this the version roundhouse is build against at the time of writing.
  • Is it possible to create executable from file instead of project, like java or go?
    2 projects | /r/learncsharp | 28 Apr 2023
    thanks, this is very good idea too, and with dotnet-script we can publish executable out of the script!
  • dotnet script script.cxs says no dotnet found
    2 projects | /r/dotnet | 18 Apr 2023
    It sounds like this is feedback for the author of the dotnet script tool: https://github.com/dotnet-script/dotnet-script
  • Administrative Scripting with Julia
    9 projects | news.ycombinator.com | 6 Apr 2023

What are some alternatives?

When comparing csharplang and dotnet-script you can also consider the following projects:

SharpLab - .NET language playground

cs-script - C# scripting platform

language-ext - C# pure functional programming framework - come and get declarative!

omnisharp-vim - Vim omnicompletion (intellisense) and more for C#

.NET Runtime - .NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.

.NET-Obfuscator - Lists of .NET Obfuscator (Free, Freemium, Paid and Open Source )

Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured

Did you know that C# is
the 10th most popular programming language
based on number of references?