我有一个解决方案,多年来一直没有出现任何问题。主 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。
任何有关如何调试问题的建议将不胜感激。
您的代码正在以三种可能性之一进行轰炸:
解决方案:
创建一个新的启动(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;
}
}
}