C# 9 top-level programs and target-typed expressions

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • dotnet-script

    Run C# scripts from the .NET CLI.

  • I think the short answer to your question is "no".

    For single-file-no-project simplicity your best bet is dotnet-script: https://github.com/filipw/dotnet-script

    For native code your best bet is NativeAOT: https://github.com/dotnet/runtimelab/tree/feature/NativeAOT

    I'm not aware of anything that combines the two.

    As to why: it's not so much that they've made it hard as they haven't made it easy. The reason they haven't made it easy is that it's a fringe use case. The main benefits of AOT are faster startup time, smaller storage requirements, and compliance with the iOS interpreted language ban. Most people who worry about those things don't mind having a project file.

    They _have_ made some changes that may partly address your concerns. Visual Studio is no longer required to build C#; you can do it purely from the command line. There is also a new project file format. it's still XML, but much simpler. The HelloWorld example[0] from NativeAOT is a good example of how simple it can get. And the command line tools include an easy way of creating a basic project files[1], so you don't have to memorize what little boilerplate remains.

    [0] https://github.com/dotnet/runtimelab/tree/feature/NativeAOT/...

  • CoreWCF

    Main repository for the Core WCF project

  • You may want to keep an eye on CoreWCF: https://github.com/CoreWCF/CoreWCF

    Though as a heavy WCF user in the past, I'd suggest your best bet is simply to throw out all your binding configs, and build your own REST API or similar backend (gRPC support in .NET 5+ is something often also recommended if you want something more RPC-like and need/want a more binary-serializer like approach, though in 2021 I'd just use JSON and something REST-ish myself). The nice thing about the Interface-driven "contract" approach should be that implementing your own is just a matter of implementing all your contract interfaces and injecting the physical implementations yourself.

    I realize that can be easier said than done as things accidentally got coupled to very specific styles of bindings over the years and not everyone followed best practices and used the Async contracts so you have to tear out a bunch of synchronous faking code and wire back in Task/ValueTask. But generally, overall, the process was implement the interfaces and remove the "magic" in the process and I often found you end up with something better anyway because it is simpler and prone to less "magic" failures.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • csharplang

    The official repo for the design of the C# programming language

  • The C# language design process is very much in the open, so anybody can go and take a look at the rationale etc.

    https://github.com/dotnet/csharplang

  • BlazorWebFormsComponents

    A collection of Blazor components that emulate the ASP.NET Web Forms controls of the same name

  • You can give it a shot with this project. https://github.com/FritzAndFriends/BlazorWebFormsComponents

    It emulates WebForms component with Blazor. Although I would just start from scratch.

  • Visual Studio Community

    Discontinued GitHub Extension for Visual Studio

  • > Nothing more frustrating than reviewing a PR with var's all over.

    ooh you gotta try reviewing your PRs within visual studio (and be sure to use VS internal diff tool as well)

    [1] https://github.com/github/VisualStudio/blob/master/docs/usin...

  • runtimelab

    This repo is for experimentation and exploring new ideas that may or may not make it into the main dotnet/runtime repo.

  • I think the short answer to your question is "no".

    For single-file-no-project simplicity your best bet is dotnet-script: https://github.com/filipw/dotnet-script

    For native code your best bet is NativeAOT: https://github.com/dotnet/runtimelab/tree/feature/NativeAOT

    I'm not aware of anything that combines the two.

    As to why: it's not so much that they've made it hard as they haven't made it easy. The reason they haven't made it easy is that it's a fringe use case. The main benefits of AOT are faster startup time, smaller storage requirements, and compliance with the iOS interpreted language ban. Most people who worry about those things don't mind having a project file.

    They _have_ made some changes that may partly address your concerns. Visual Studio is no longer required to build C#; you can do it purely from the command line. There is also a new project file format. it's still XML, but much simpler. The HelloWorld example[0] from NativeAOT is a good example of how simple it can get. And the command line tools include an easy way of creating a basic project files[1], so you don't have to memorize what little boilerplate remains.

    [0] https://github.com/dotnet/runtimelab/tree/feature/NativeAOT/...

  • .NET-Obfuscator

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

  • The term you're looking for is obfuscation. This seems like a good roundup: https://github.com/NotPrab/.NET-Obfuscator

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • FrameworkBenchmarks

    Source for the TechEmpower Framework Benchmarks project

  • How so? .NET is 2-4x faster than Scala in benchmarks (https://www.techempower.com/benchmarks/#section=data-r20&hw=...). Do you just prefer the syntax and language features?

  • Introducing .NET Multi-platform App UI (MAUI)

    .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.

  • It looks like MAUI [1] is the path forward

    [1] https://devblogs.microsoft.com/dotnet/introducing-net-multi-...

  • cs-script

    C# scripting platform

  • There are third party projects that support this: https://github.com/oleg-shilo/cs-script

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts