C#警告CS7022咨询:自定义Main方法为何被忽略?
问题原因
从.NET 6开始,控制台应用模板默认启用了顶级语句(C# 9及以上版本特性)。执行dotnet new console创建项目时,模板生成的Program.cs已经包含全局代码形式的入口:
Console.WriteLine("Hello, World!");
编译器会将这段全局代码作为程序的入口点,因此你自定义的Hello.Main()方法会被忽略,进而触发CS7022警告。
解决方法
方法一:改用顶级语句(推荐)
删除代码中的命名空间、类和Main方法,只保留核心逻辑:
Console.WriteLine("hello world");
这种写法符合模板默认语法,警告会自动消失,运行时可正常输出目标内容。
方法二:保留传统Main入口
如果你偏好传统的程序结构,有两种实现方式:
- 创建项目时直接指定:
执行创建命令时添加--use-program-main参数:
dotnet new console -o HelloCS --force --use-program-main
生成的项目默认包含带Main方法的Program类,直接替换成你的代码即可。
- 修改现有项目文件:
打开项目目录下的HelloCS.csproj,添加<ImplicitUsings>disable</ImplicitUsings>配置:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>disable</ImplicitUsings> <Nullable>disable</Nullable> </PropertyGroup> </Project>
保存后,编译器会识别你的Hello.Main()为程序入口点,警告随之消失。
内容的提问来源于stack exchange,提问作者SPlatten
相关产品推荐
相关产品推荐

