2

您好,我已经创建了一个 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.csApplication.Run(new mainForm());追溯到我的mainForm.cs. 在这条线上,我有我的后台工作人员:

private BackgroundWorker snBW = new BackgroundWorker();

我们离得更近了吗?

4

3 回答 3

2

伟大而酷的问题。

有时应用程序会因为丢失、损坏或关闭目标框架版本而失败。您可以查看您的应用程序需要什么框架,完整或客户端配置文件,并在使用前安装它。

由于该组件的 Microsoft 更新损坏,.Net 2.0 经常发生框架损坏的问题。它不时发生在不同的机器上。解决方案是重新安装框架。

Windows 7、2008 Server 有时会出现停用 .Net 3.5 功能的问题。它可以在 Windows 的功能中激活。

许多 .Net 3.5 应用程序实际上需要 .Net 3.5SP1。

于 2012-05-26T18:02:16.320 回答
0

首先,检查您的计算机上是否安装了适当的 .net 框架。其次,如果您使用任何外部库,请务必将所有必需的 dll 复制到应用程序文件夹。

于 2012-05-26T18:02:15.943 回答
0

事件Form.Load处理程序不会在您的外部 try–catch 块的上下文中执行。UI 事件是有效的回调;您应该在它们的每个处理程序中声明一个新的 try-catch 块以进行有效调试。

于 2012-05-26T18:02:55.643 回答