不包含适合入口点的静态 main 方法(但我已正确配置它)

本文关键字:配置 方法 入口 包含适 main 静态 | 更新日期: 2023-09-27 17:55:31

嗨,朋友们,我

有一个控制台应用程序,它从 Access 数据库更新三个表中读取数据,我使用名为 Automate 9.0 的软件自动执行此操作,所以我需要知道 exe 是否失败以及为什么失败,所以我正在使用一些枚举值跟踪它,我认为这会导致我的 Main 方法出错。

namespace accessmovingtest
   {
     enum ExitCode : int
      {
       Success = 0,
       SqlError = 1,
       CannotFindFileAccessDB = 2,
       ConnectionRelatedError = 3
      }
   class Program
    {
        public static ExitCode Main(string[] args) 
        {
            ExitCode RetVal;
            string accdbConnStr = ConfigurationManager.ConnectionStrings["AccessDBtoSql.Properties.Settings.Company_Master_DataConnectionString"].ToString();
    var con = new OdbcConnection(accdbConnStr);
     try
      { 
        con.Open();
        con.Close();
      }
      catch(Exception ex)
       {
          Console.Out.WriteLine(ex.StackTrace);
          Console.Out.WriteLine(ex.Message);
          Console.Out.WriteLine(ex.TargetSite);
          Console.WriteLine("Cannot Establish a connection to the access database");
                RetVal = ExitCode.ConnectionRelatedError;
                return RetVal;
            }
            try
            {
                string accdbConnStrr = ConfigurationManager.ConnectionStrings["AccessDBtoSql.Properties.Settings.Company_Master_DataConnectionString"].ToString();
                if (!File.Exists(accdbConnStrr))
                {
                    Console.WriteLine("AccessDb Found");
                }
            }
            catch (FileNotFoundException ex)
            {
                Console.Out.WriteLine(ex.StackTrace);
                Console.Out.WriteLine(ex.Message);
                Console.WriteLine("Cannot Find Access Data");
                RetVal = ExitCode.CannotFindFileAccessDB;
                return RetVal;
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.Message);
            }
            try
            {
                accesstosqlitemmaster();

            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.StackTrace);
                Console.Out.WriteLine(ex.Message);
                RetVal = ExitCode.SqlError;
                return RetVal;

            }
            try
            {
                accesstosqlpiecedimensionmasterdata();
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.StackTrace);
                Console.Out.WriteLine(ex.Message);
                RetVal = ExitCode.SqlError;
                return RetVal;
            }
            try
            {
                accesstosqlitemdeslookups();

            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.StackTrace);
                Console.Out.WriteLine(ex.Message);
                RetVal = ExitCode.SqlError;
                return RetVal;
            }
            RetVal = ExitCode.Success;
            return RetVal;

        }

在主方法旁边的退出代码上出现错误

不包含适合入口点的静态 main 方法(但我已正确配置它)

根据 C# 5.0 语言规范 §3.1,

当执行环境调用 指定方法,称为应用程序的条目 点。此入口点方法始终命名为 Main,并且可以有一个 以下签名:

static void Main() {...}

static void Main(string[] args) {...}

static int Main() {...}

static int Main(string[] args) {...}

您正在为 main 方法返回一个枚举,而不是满足规范的枚举底层的 int。

public static int Main(string[] args) 
{
    ExitCode RetVal;
    ...
    ...
    RetVal = ExitCode.Success;
    return (int)RetVal;