Mainという名前のメソッドを持つ型が複数ある場合はコンパイルエラーとなります。 この場合、コンパイラオプション/main、またはプロジェクトファイルのプロパティ<StartupObject>によって、どの型のMainメソッドをエントリポイントとするか指定することができます。 /main, <StartupObject>では、Mainメソッドを持つ型を名前空間.型名の形式で指定します。

複数のMainメソッドが存在する場合にエントリポイントとなるメソッドを指定する
Imports System

Namespace NS
  Class EntryPoint
    Shared Sub Main() ' このMainメソッドをエントリポイントとしたい
      Console.WriteLine("Hello, entry point!")
    End Sub
  End Class
End Namespace

Class Sample
  Shared Sub Main() ’ このMainメソッドはエントリポイントとしては使用しない
    Console.WriteLine("Hello, sample!")
  End Sub
End Class
複数のMainメソッドがある場合
test.cs(5,17): error CS0017: プログラムで複数のエントリ ポイントが定義されています。エントリ ポイントを含む型を指定するには、/main でコンパイルしてください。 [sample.csproj]
プロジェクトファイルのStartupObjectでエントリポイントとしたいMainメソッドを持つ型を指定する
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5</TargetFramework>
    <StartupObject>NS.EntryPoint</StartupObject> <!-- エントリポイントとしたいMainメソッドを持つ型を指定する -->
  </PropertyGroup>
</Project>
実行結果
$ dotnet run
Hello, entry point!
複数のMainメソッドがある場合
>csc /nologo test.cs && test.exe
test.cs(5,17): error CS0017: プログラムで複数のエントリ ポイントが定義されています。エントリ ポイントを含む型を指定する には、/main でコンパイルしてください。
/mainによってエントリポイントとしたいMainメソッドを持つ型を指定する
>csc /nologo /main:NS.EntryPoint test.cs && test.exe
Hello, entry point!
複数のMainメソッドがある場合
$ mcs test.cs
test.cs(5,17): error CS0017: Program `test.exe' has more than one entry point defined: `NS.EntryPoint.Main()'
test.cs(13,15): error CS0017: Program `test.exe' has more than one entry point defined: `Sample.Main()'
Compilation failed: 2 error(s), 0 warnings
/mainによってエントリポイントとしたいMainメソッドを持つ型を指定する
$ mcs /main:NS.EntryPoint test.cs && mono test.exe
Hello, entry point!

IDE上でもエントリポイントをコンパイルオプションとして変更することができます。 またIDE上では、MainメソッドではなくフォームをWindowsアプリケーションのエントリポイントとして指定する場合もあります。