Visual Studio代码:"Program has more than one entry point defined"

Visual Studio Code: "Program has more than one entry point defined"

我创建了一个 C# project using Visual Studio Code。该项目包含两个 .cs 文件,Addition.csSubstraction.cs。两个文件都包含一个 main() 函数并且两个文件都包含两个不同的程序。

Addition.cs 文件中的代码:

using System;

namespace Example
{
    class Addition
    {
        static void Main(string[] args)
        {
            int sum = 3 + 2;
            Console.WriteLine(sum);
        }
    }
}

Substraction.cs 文件中的代码

using System;

namespace Example
{
    class Substraction
    {
        static void Main(string[] args)
        {
            int sub = 3 - 2;
            Console.WriteLine(sub);
        }
    }
}

我想一个一个地测试这两个程序,但是当我这样做的时候

"dotnet run"

失败并出现上述错误。

我知道是因为同一项目中的两个 main() 函数(入口点)导致了此错误,但这可以在 Visual Studio 中通过设置启动项目来解决。

我正在使用 Visual Studio 代码,我无法在其中设置启动项目。

有没有办法在 Visual Studio 代码中为 C# 项目设置入口点?

如果两个入口点都在同一个项目中,设置启动项目无论如何都不会做任何事情。您需要设置启动object.

这可以在完整版 Visual Studio 的项目属性对话框中完成(在“应用程序”下查找 "Startup object"),或者在 .csproj 文件中设置 Project/PropertyGroup/StartupObject:

<StartupObject>Example.Addition</StartupObject>

或者考虑使用带有命令行参数的单个 Main() 入口点。

如果您使用的是 Visual Studio 代码,请添加以下行。

<StartupObject>ExampleNameSpace.ExampleClass</StartupObject>

对于 ExampleNameSpace,键入您的命名空间名称

对于 ExampleClass,键入您的 class 名称。

如果我认为您的命名空间是 CSharp,并且您在其中定义 Main 方法的 class 是 MainClass,那么您的 .csproj 应该如下所示。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <StartupObject>CSharp.MainClass</StartupObject>
  </PropertyGroup>
</Project>

注意:此代码示例适用于 .Net5