CS0017错误:多入口点问题,Startup object无选项如何解决?
解决CS0017编译错误:多入口点但启动对象无可选项的问题
出现CS0017错误是因为项目里存在多个带Main方法的类,但VS属性页的启动对象下拉框里没有可选条目,核心原因是你的类都用了internal访问修饰符——VS的启动对象列表只会显示public的包含Main方法的类。
下面是几种可行的解决办法:
方法一:修改类的访问修饰符为public
把包含Main方法的类的internal改成public,比如:
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeginnerProject { public class FakeCoin { static void Main(string[] args) { Console.WriteLine("Hi"); } } }
修改后回到项目属性页,就能在启动对象下拉框里看到所有带Main方法的public类,选择你想要的入口即可。
方法二:手动编辑项目文件指定入口点
- 右键项目→选择“编辑项目文件”(.csproj)
- 在
<PropertyGroup>节点里添加或修改<StartupObject>,值为命名空间.类名,比如指定FakeCoin作为入口:
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <StartupObject>BeginnerProject.FakeCoin</StartupObject> </PropertyGroup>
- 保存文件,重新加载项目即可生效。
方法三:删除多余的Main方法
直接删掉不需要的类里的Main方法,只保留一个作为项目入口,这种方法最简单直接,适合不需要多个入口的场景。
你的三个类代码如下:
第一个类
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeginnerProject { internal class Program { static void Main(string[] args) { } } }
第二个类
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeginnerProject { internal class FakeCoin { static void Main(string[] args) { Console.WriteLine("Hi"); } } }
第三个类
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeginnerProject { internal class WhyLikeThat { static void Main(string[] args) { } } }
属性页面情况:启动对象下拉框为空,无任何可选条目。
内容的提问来源于stack exchange,提问作者yehonatan
相关产品推荐
相关产品推荐

