I am using dotnet
to build a .NET Core C# project from the command line. The project has multiple classes with a main
method. Thus I get the error:
You can edit your csproj to define which class to use (inside a PropertyGroup
):
<StartupObject>foo.Program2</StartupObject>
or specify this MSBuild property on the command line via:
$ dotnet build foo.csproj /p:StartupObject=foo.Program2
Just to add why calling dotnet
with /main
fails with that error, note that it says "Compile with /main
"; /main
is a parameter for the compiler (csc.exe
), not dotnet build. dotnet build
will invoke MSBuild.exe which, in turn, will invoke csc.exe
, but you'll need to tell dotnet build
what the startup class is so it can tell csc.exe
. This is what the accepted answer does.
Alternatively, if you were calling csc.exe
directly, you could pass /main
to it like so...
csc.exe Program.cs Test.cs /main:TestNamespace.Test