gpt4 book ai didi

c#-9.0 - 警告 CS7022 - 程序的入口点是全局代码;忽略 'Program.Main(string[])' 入口点

转载 作者:行者123 更新时间:2023-12-04 11:37:38 26 4
gpt4 key购买 nike

所以我有一个问题,我的错误列表中有这个警告:
严重性代码描述项目文件行抑制状态
警告 CS7022 程序的入口点是全局代码;忽略“Program.Main(string[])”入口点。项目目录ToProject 23 Active
这基本上是它 throw 的地方

namespace MyProgram
{
class Program
{
static async Task Main(string[] args) => await new Program.MainAsync();
}
static async Task MainAsync()
{.. do stuff.. }
}
那是导致错误的代码行。我尝试过使用 Main 类,我确实使用返回类型 void 并在 MainAsync 方法上调用了 GetAwaiter 和 GetResult 方法。
我试过研究错误,但我没有运气,所以希望这个线程能帮助其他一些人......
我目前在 C# 9.0 上运行
Visual Studio 2019 构建版本:16.8.30717.126
编辑:忘记显示 MainAsync 在文件中......(抱歉)我试图限制我显示的方法数量,因为其中 95% 对问题没有用......但问题是,虽然我的应用程序编译,在执行我的程序时它立即退出,好像它不知道从哪里开始......
编辑2:
感谢汉斯·帕桑特 -
如果有人经历过类似的事情,请尝试他提到的内容:
“这是一个相当糟糕的 C# v9 功能。项目 > 属性 > 构建选项卡,高级按钮 > 语言版本 = 7.3 您现在应该从您不知道必须发布的代码中得到一个不错的错误消息”。
基本上在改回 C# 8.0 后,我发现这是一个隐藏的不同文件,导致了问题。

最佳答案

从 net5.0 开始,我发现这个错误可能是由在 namespace 关键字上方有杂散分号引起的。这是错误还是预期行为超出了我的范围,但是请确保您没有任何独立的分号:

using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
; // This will cause CS7022

namespace Tomoe.Commands.Public
请务必检查您的所有文件,而不仅仅是 Program.cs编辑:显然这是预期的行为,请参阅 https://github.com/dotnet/roslyn/issues/53472 .
TL;DR,命名空间上方的分号被解释为顶级语句。因为在该语句中没有调用任何内容,所以程序退出。这和做一样
static void Main() { 
;
}
在您的 Program.cs .虽然我确实觉得应该做出一些改变,但这背后的设计决策是非常合乎逻辑的,并且完全可以理解。
编辑 2:根据 jcouv on Github ,这现在变成了错误而不是警告。希望这个“bug”不再骚扰我们!

关于c#-9.0 - 警告 CS7022 - 程序的入口点是全局代码;忽略 'Program.Main(string[])' 入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65045746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com