Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

447
Views
'dotnet build' specify main method

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:

$ dotnet build
Microsoft (R) Build Engine version 15.1.548.43366
Copyright (C) Microsoft Corporation. All rights reserved.

Test.cs(18,28): error CS0017: Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.

Build FAILED.

Passing the /main switch results in the error:

$ dotnet build /main:Test
Microsoft (R) Build Engine version 15.1.548.43366
Copyright (C) Microsoft Corporation. All rights reserved.

MSBUILD : error MSB1001: Unknown switch.
Switch: /main:Test

How can I pass the /main switch to the dotnet command?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

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

where

namespace foo
{
  class Program2{ public static void Main() {} }
}
about 4 years ago · Santiago Trujillo Report

0

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
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!