在xp上生成.net可执行文件,在windows 7上不启动-werfault

在xp上生成.net可执行文件,在windows 7上不启动-werfault,.net,windows,deployment,windows-7,.net,Windows,Deployment,Windows 7,我在WindowsXP工作站上制作了一个.NET应用程序,它运行良好。 但是如果我尝试在Windows7上运行它,应用程序根本不会启动——没有窗口,没有错误消息,没有任何可见的内容。我在7中尝试了所有兼容模式的组合,但没有一个有效。 我在任务管理器中看到的唯一情况是,当我在windows 7上启动应用程序的同时启动werfault.exe进程时,几秒钟后,这两个进程都消失了 是否有werfault.exe日志文件或需要检查的内容以了解发生了什么 谢谢您可以尝试查看Windows事件日志。它可能包

我在WindowsXP工作站上制作了一个.NET应用程序,它运行良好。 但是如果我尝试在Windows7上运行它,应用程序根本不会启动——没有窗口,没有错误消息,没有任何可见的内容。我在7中尝试了所有兼容模式的组合,但没有一个有效。 我在任务管理器中看到的唯一情况是,当我在windows 7上启动应用程序的同时启动werfault.exe进程时,几秒钟后,这两个进程都消失了

是否有werfault.exe日志文件或需要检查的内容以了解发生了什么


谢谢

您可以尝试查看Windows事件日志。它可能包含有关错误的信息。还可以尝试以管理员身份运行。您还应该确保Windows 7计算机上安装了正确的.NET framework。

请耐心等待,并向专家学习:)

较低级别的调试器(如WinDbg)可以在最困难的时候提供帮助

在您的情况下,发生了未经处理的异常,如果您运行,WinDbg+SOS可以向您显示异常详细信息!体育


祝你好运。

WinForms的默认项目模板缺少几个try/catch块,它确实需要这些块来避免此类问题

表单构造函数是一个简单的

InitializeComponent();
最好有一个try/catch块,它抛出一个显示错误的消息框

Program.cs中的Main也是如此

在这些方法中出错时,我偶尔会遇到显示messagebox的问题,因此我求助于显示控制台窗口:

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();
然后打电话:

string msg = "Some explanation.";
AllocConsole();
Console.WriteLine(msg);
MessageBox.Show(msg);

谢谢我不知道为什么我没有想到它!在事件日志中,我发现了异常。在消息框中不显示-未处理-异常是一种.NET 4.0行为?@Valerio Manfredi,这取决于异常、应用程序的类型、代码中是否有异常处理、该异常发生的时间等……在这种情况下是“异常信息:System.IO.FileNotFoundException”,该应用程序是一个简单的Windows窗体应用程序。@Valerio Manfredi,何时发生此异常?在应用程序的哪个执行点?@Valerio Manfredi,我怀疑这就是你没有看到任何消息框的原因。构造函数抛出时,甚至不会创建主窗口。