Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# 9 top-level programs without csproj?

Tags:

c#

c#-9.0

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.

like image 538
Shaddix Avatar asked Oct 17 '20 06:10

Shaddix


Video Answer


1 Answers

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://docs.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.

like image 138
Athanasios Kataras Avatar answered Oct 11 '22 16:10

Athanasios Kataras