C# 9 top-level programs without csproj?

2.1k views Asked by At

One feature of coming C# 9 is so called top-level programs. So that you could just write the following without classes.

using System;

Console.WriteLine("Hello World!");

and dotnet run will launch it for you.

It works for me, but only if I also add a .csproj file like the one below

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>
</Project>

Is there a way to skip .csproj from the picture? :) So that there's just a single Program.cs file and nothing more.

2

There are 2 answers

4
Athanasios Kataras On BEST ANSWER

No there isn't. The csproj file, explains to the compiler what kind of output to make.

It also references any needed libraries, in your case that is the SDK: https://learn.microsoft.com/en-us/dotnet/core/tools/csproj

Metapackages are implicitly referenced based on the target framework(s) specified in the <TargetFramework> or <TargetFrameworks> property of your project file.

Without it, net core would miss information on what to build and how. You wouldn't even have the references to System Namespaces available.

0
Erik Karlsson On

You can create a C# script file (.csx) and run it with the dotnet script tool from

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

But not a true, valid, C# file no