Не содержит статический метод main, подходящий для точки входа (но у меня он настроен правильно)
Привет, друзья, у меня есть консольное приложение, которое считывает данные из трех баз данных обновления доступа, и я автоматизировал это с помощью программного обеспечения, называемого automate 9.0, поэтому мне нужно знать, происходит ли сбой exe-файла и почему он выходит из строя, поэтому я отслеживаю это с некоторыми значениями enum и Я думаю, что это вызывает ошибки в моем основном методе.
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;
}
Получение ошибки в ExitCode рядом с Main Method
1 ответ
Согласно Спецификации языка C# 5.0, §3.1,
Запуск приложения происходит, когда среда выполнения вызывает назначенный метод, который называется точкой входа приложения. Этот метод точки входа всегда называется Main и может иметь одну из следующих подписей:
static void Main() {...}
static void Main(string[] args) {...}
static int Main() {...}
static int Main(string[] args) {...}
Вы возвращаете перечисление для вашего основного метода, а не int, лежащее в основе перечисления, которое удовлетворяло бы спецификации.
public static int Main(string[] args)
{
ExitCode RetVal;
...
...
RetVal = ExitCode.Success;
return (int)RetVal;