2014-01-30 3 views
0

Я разработал приложение Windows в Visual Studio 2012 с целевой структурой как .NET 4. Я развертываю его на компьютере с Windows XP SP2. Он работал нормально, но теперь Windows XP была переустановлена, и приложение не работает. Я установил рамку .NET 4 в XP, но она показывает следующее сообщение об ошибке (от просмотра событий):System.Runtime.InteropServices.COMException в приложении Windows

Application: SGate.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: System.Runtime.InteropServices.COMException 
Stack: 
    at System.RuntimeTypeHandle.CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandleInternal ByRef, Boolean ByRef) 
    at System.RuntimeType.CreateInstanceSlow(Boolean, Boolean, Boolean) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean, Boolean, Boolean, Boolean) 
    at System.Activator.CreateInstance(System.Type, Boolean) 
    at SGate.Gate..ctor() 
    at SGate.Program.Main() 

Я гугл для решения, я полагал, что исключение означает «Исключение, которое возникает, когда непризнанное HRESULT является возвращается из вызова метода COM. " Но это не помогает. Кто-нибудь знает, что вызывает эту ошибку?

Program.Main():

static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Gate()); 
     } 
    } 

Gate ИХ() и связанная с ними функция:

public Gate() 
     { 
      InitializeComponent(); 
      ClearForm();   
     } 

private void ClearForm() 
     { 
      try 
      { 
       leaveApply = new EmployeeLeaveApplyBO(); 
       CurrentPageIndex = 1; 
       dataGridView1.DataSource = null; 
       lblFromDate.Text = ""; 
       lblLeaveReason.Text = ""; 
       lblLeavType.Text = ""; 
       lblName.Text = ""; 
       lblEmpCode.Text = ""; 
       lblThumbID.Text = ""; 
       lblToDate.Text = ""; 
       lblStatus.Text = "STATUS"; 
       lblStatus.ForeColor = Color.Black; 
       groupBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); 
       groupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); 
      } 
      catch (Exception e) 
      { 
       LogUtil.LogError(e.ToString()); 
      } 
     } 
+0

Есть ли у вас какой-либо код? –

+0

Добавлен код, в котором возникает ошибка. –

+0

Попробуйте удалить элементы управления из этой формы, пока не выясните, какой из них является создателем проблемы. –

ответ

0

Попытка отладить, что вызывает эту ошибку. Попробуйте взломать, когда выбрано исключение.

ШАГИ: - Перейдите в раздел «Отладка»> «Исключения ...» и используйте параметр «Найти ...», чтобы найти System.Runtime.InteropServices.COMException. Отметьте вариант разрыва, когда он будет брошен, а затем отлаживайте приложение.

Вы должны быть в состоянии найти, в чем проблема.

Вы можете попробовать это, если вы не уверены, что именно вызывает

1.Try running visual studio or application as "Run as administrator". 
2.Check which platform did you set during build ("AnyCPU, x86, x64") 

Надеюсь, что это помогает,

С наилучшими пожеланиями

Raghu.M

+0

Спасибо Рагху, но он отлично работает в Visual Studio и Windows 7. Никакие исключения не выбрасываются в режиме отладки. Проблема возникает только при открытии exe в Windows XP. –

+0

Вы пытались запустить exe с правами администратора? – Raghurocks

+0

Да, да. Это не сработало. –

Смежные вопросы