2012-05-26 159 views
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.cs这是Application.Run(new mainForm());抛出异常,我将其追溯到我的mainForm.cs的第32行。在此行中我有我的后台工作:

private BackgroundWorker snBW = new BackgroundWorker();

是我们的目标?

+0

你的目标框架是什么? –

+0

你能否粘贴'问题签名'消息的整个部分。这通常发生在未找到引用dll时。你的项目面向哪个.NET框架? – Rahul

+0

[解密.NET clr20r3异常参数P1..P10]的可能的重复(http://stackoverflow.com/questions/4052770/deciphering-the-net-clr20r3-exception-parameters-p1-p10) –

回答

2

伟大而酷的问题。

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

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

停用.Net 3.5功能的问题有时会发生在Windows 7,2008服务器上。它可以在Windows的功能中激活。

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

+0

所以在我的测试客户端机器上,我在安装的程序列表中看到.NET Frameworks for 1.1,3.5 SP1和4 Client Profile。因为我的应用程序设置了4个客户端配置文件,我应该继续在其他地方寻找问题吗? – ikathegreat

+0

什么是操作系统及其比特率?什么是你的应用程序的位? –

+0

我在Win7 Professional x64笔记本电脑上写了这个。我已经在相同的桌面以及x32 Vista上进行了测试(不知道为什么)。 – ikathegreat

0

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

+0

当我从VS2010发布应用程序时,这会自动完成吗?如果不是这样,那并不意味着我将不得不关闭我的电脑并获取我在那里各自使用的所有DLL的副本吗? (Lame?) – ikathegreat

+0

嗯......你使用哪个外部库?通过你的项目的参考,你会得到的DLL。 –

0

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

+0

好主意。所以我在Program.cs中添加了3个独立的try-catch块。错误文本是System.Runtime.Interop.Services.COMException(0x80040154):由于以下错误,Retreiving COM组件工厂的CLSID(一堆文本)失败:80040154 Class Not Registered.' There are a good way对我来调试这个? – ikathegreat

+0

我会建议用完整的错误文本打开一个新的问题。您应该包含CLSID,因为它标识导致问题的第三方COM组件(除非这些信息对您的公司是保密的)。 – Douglas

相关问题