c# .net wpf exception pixelsense

c# - ¿Cómo evitar una excepción System.Runtime.InteropServices.COM?



.net wpf (2)

Me encontré con System.Runtime.InteropServices.COMException al abrir una solución de proyecto. A veces el usuario no tiene suficientes privilegios para ejecutar algunos métodos COM . Ejecuté Visual Studio como administrador y la excepción desapareció.

En mi proyecto Microsoft Surface, siempre recibo muchas de las siguientes excepciones:

''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_32/mscorlib/2.0.0.0__b77a5c561934e089/mscorlib.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.HostingProcess.Utilities/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.HostingProcess.Utilities.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.HostingProcess.Utilities.Sync/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.Debugger.Runtime/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.Debugger.Runtime.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Users/Roflcoptr/Documents/Visual Studio 2008/Projects/MuReSe/MuReSe/bin/Debug/MuReSe.vshost.exe'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Xml.Linq/3.5.0.0__b77a5c561934e089/System.Xml.Linq.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Data.DataSetExtensions/3.5.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/WindowsBase/3.0.0.0__31bf3856ad364e35/WindowsBase.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_32/PresentationCore/3.0.0.0__31bf3856ad364e35/PresentationCore.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/PresentationFramework/3.0.0.0__31bf3856ad364e35/PresentationFramework.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.Surface/1.0.0.0__31bf3856ad364e35/Microsoft.Surface.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.Surface.Presentation/1.0.0.0__31bf3856ad364e35/Microsoft.Surface.Presentation.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.Surface.Presentation.Generic/1.0.0.0__31bf3856ad364e35/Microsoft.Surface.Presentation.Generic.dll'' The thread ''vshost.NotifyLoad'' (0x1504) has exited with code 0 (0x0). The thread ''vshost.LoadReference'' (0x131c) has exited with code 0 (0x0). ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Users/Roflcoptr/Documents/Visual Studio 2008/Projects/MuReSe/MuReSe/bin/Debug/MuReSe.exe'', Symbols loaded. ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll'' Step into: Stepping over method without symbols ''MuReSe.App.App'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.Surface.Shell.ShellApi/1.0.0.0__31bf3856ad364e35/Microsoft.Surface.Shell.ShellApi.dll'' ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.Surface.Common/1.0.0.0__31bf3856ad364e35/Microsoft.Surface.Common.dll'' A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Shell.ShellApi.dll A first chance exception of type ''Microsoft.Surface.Common.ProcessCommunicationException'' occurred in Microsoft.Surface.Shell.ShellApi.dll A first chance exception of type ''System.Threading.WaitHandleCannotBeOpenedException'' occurred in mscorlib.dll ''MuReSe.vshost.exe'' (Managed (v2.0.50727)): Loaded ''C:/Windows/assembly/GAC_MSIL/Microsoft.Surface.Core/1.0.0.0__31bf3856ad364e35/Microsoft.Surface.Core.dll'' A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.IO.FileNotFoundException'' occurred in mscorlib.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll A first chance exception of type ''System.Runtime.InteropServices.COMException'' occurred in Microsoft.Surface.Core.dll

La última excepción se lanza todo el tiempo hasta que detenga el programa. Ya comenté todo mi código, y ejecuté la aplicación con nada más que el código ya incorporado, pero sucede lo mismo.

¿Cómo puedo corregir eso? Solo encontré esta referencia:

http://www.mobydisk.com/softdev/techinfo/dotnetexceptions.html

Ahí dice:

La excepción que se produce cuando se devuelve un HRESULT no reconocido desde una llamada de método COM.

Pero no sé lo que esto significa ...

==== EDITAR ====

Seguí la sugerencia en la respuesta a continuación para depurar la excepción. Este es el informe detallado:

System.Runtime.InteropServices.COMException occurred Message=Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) Source=Microsoft.Surface.Shell.ShellApi ErrorCode=-2147221164 StackTrace: at Microsoft.Surface.Shell.NativeMethods.CoCreateInstance(Guid rclsid, Object pUnkOuter, CLSCTX dwClsContext, Guid riid) InnerException:

Y el debugador se detuvo en la llamada del constructor:

public MainWindow() { InitializeComponent(); // Add handlers for Application activation events AddActivationHandlers(); // AssemblyParser parser = new AssemblyParser(); //parser.parse(); // DirSearch(@"C:/Users/Roflcoptr/Documents/Visual Studio 2008/Projects/TestClass.dll/"); }

Paré justo al comienzo del constructor:

public MainWindow()


Su código (o algún código llamado por usted) realiza una llamada a un método COM que devuelve un valor desconocido. Si puedes encontrar eso, entonces estás a mitad de camino.

Podría intentar romper cuando se lanza la excepción. Vaya a Depurar> Excepciones ... y use la opción Buscar ... para localizar System.Runtime.InteropServices.COMException . Marque la opción para romper cuando se lanza y luego depurar su aplicación.

Con suerte, se romperá en algún lugar significativo y podrá rastrear y encontrar el origen del error.