您好我已经创建了一个WinForms应用程序,我已经准备好在其他计算机上实现(我的)。我在其他地方运行时遇到了问题。
在Program.cs
文件中我得到了这个以查看问题所在:
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new mainForm());
}
catch(SystemException ex)
{
MessageBox.Show("Error: ", ex.ToString());
}
}
除了添加try/catch
之外,这里没有编辑任何内容。我知道问题出现在Program.cs
中,因为我已经设置了一系列消息框,以便在MainForm_Load()
块的不同阶段显示。该应用程序没有达到任何一个。
这可能听起来很模糊,但我无法让这个应用程序在我的笔记本电脑以外的任何地方工作。它会成为我Usings
中的一个吗?如果需要,我可以包括那些。
编辑2:根据Marko的建议,我将所有外部DLL复制到与我正在尝试运行的EXE相同的根文件夹中。第三个try-catch块抛出了来自Program.cs
Application.Run(new mainForm());
的异常,我将其追溯到mainForm.cs
的第32行。在这一行,我有我的背景工作者:
private BackgroundWorker snBW = new BackgroundWorker();
我们离得更近了吗?
答案 0 :(得分:2)
很棒很酷的问题。
有时,应用程序因缺少,损坏或关闭目标框架版本而失败。您可以查看应用程序所需的框架,完整或客户端配置文件,并在使用前进行安装。
由于该组件的Microsoft更新损坏,.Net 2.0经常出现问题。它不时发生在不同的机器上。解决方案是重新安装框架。
有时会在Windows 7,2008 Server上发生已停用.Net 3.5功能的问题。它可以在Windows的功能中激活。
许多.Net 3.5应用程序实际上需要.Net 3.5SP1。
答案 1 :(得分:0)
首先,检查您是否在计算机上安装了适当的.net框架。 其次,如果您正在使用任何外部库,请务必将所有必需的dll复制到应用程序文件夹。
答案 2 :(得分:0)
Form.Load
事件处理程序不会在外部try-catch块的上下文中执行。 UI事件实际上是回调;你应该在每个处理程序中声明一个新的try-catch块,以便进行有效的调试。