如何解决没有可执行代码的顶层程序不编译
我有一个面向 net5 的控制台应用程序,应用程序中唯一的一行代码是这个
System.Console.WriteLine();
它按预期工作,但是当我删除该行时,出现编译错误,指出缺少入口点。这是错误:https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs5001
我的问题是为什么编译器的行为会有所不同。在这种情况下,为什么编译器会以不同的方式对待顶级程序和非顶级程序,后者会出现静态“Main”方法?
解决方法
来自msdn
语义
如果在程序的任何编译单元中存在任何顶级语句,则其含义就好像它们组合在全局命名空间中的 Program 类的 Main 方法的块体中,如下所示:
所以你看,你的语句是在一个隐式 Kotlin:
val printer = IppPrinter(URI.create("ipp://myprinter/ipp"))
val job = printer.printJob(File("mydocument.pdf"))
job.waitForTermination()
方法中编译的。但是要使用这个 Main()
方法,您必须至少有一个顶级语句。仅当存在顶级语句时才会创建此隐式语句。您建议的替代方法会导致始终生成隐式 Main()
。
您看到的错误显然与此相关:没有任何代码行,没有生成隐式 Main()
方法,因此返回缺少入口点错误。 >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。