在之前工作的应用程序中未达到 Main() 方法(在 Program.cs 类中)

问题描述 投票:0回答:1

我有一个解决方案,多年来一直没有出现任何问题。主 Startup 项目(WinForms 应用程序)的 Program.cs 已经有几年没有更改了。但最近我在调试中运行它时遇到了问题。我以为我已经通过清理项目并删除 bin 和 obj 文件解决了这个问题。然而,今天我只成功运行和调试了该项目两次。 (第二次是在修复 Visual Studio 之后(但此后又失败了)。

当尝试在调试或发布中运行时,我得到的唯一信息是:

程序“[25648] MyApp.exe”已退出,代码为 0 (0x0)。

如何进一步调试问题?

甚至没有到达类的第一行或 Main() 方法的第一行(使用断点):

private static string test1 = "STOP HERE";

mutex = new Mutex(true, AppName, out bool createdNew);

这是我的 Program.sc 文件的开头(除了出于调试目的而添加的“STOP HERE”行之外,自 2023 年 2 月以来未更改)。

static class Program
{

    private static string test1 = "STOP HERE";

    const string AppName = "MyApp";
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    private static Mutex mutex = null;

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        mutex = new Mutex(true, AppName, out bool createdNew);

        if (!createdNew)
        {
            MessageBox.Show("MyApp is already running.", KwikConstants.AppName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //app is already running! Exiting the application  
            Application.Exit();
        }
    }
}

它是使用 VS 2022 v17.12.3 用 c# 编写的 .Net 8.5框架 没有 PreBuild 脚本。 我已经在 x64、x86 和任何 CPU 上尝试过。 我已经更新了所有 NuGet 包。

完整的解决方案构建时没有错误。 我的电脑操作系统是 Windows 11 23H2

我尝试将 .exe 添加到我的防病毒排除项中,甚至在测试时停用了 AV。

任何有关如何调试问题的建议将不胜感激。

c# winforms debugging visual-studio-2022
1个回答
0
投票

您的代码正在以三种可能性之一进行轰炸:

  • 无法加载DLL
  • GetLogger 的轰炸
  • 互斥体

解决方案:

创建一个新的启动(ProgramName),它是干净的,并且有一个基本的控制台写入。 创建生产文件夹的副本,复制 EXE 并运行它。

static class ProgramNew
{



    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        try
        {
            Program.Main(args);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
            throw;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.