El complemento Visual Studio se bloquea con un mensaje de error "TargetInvocationException"

Síntomas

Cuando se ejecuta un paquete de integración o -, Microsoft Visual Studio 2013 puede terminar inesperadamente con una excepción no controlada del tipo System.Reflection.TargetInvocationException.

En el registro de sucesos de la aplicación, verá un Error con texto similar de la aplicación:

Nombre de la aplicación con errores: devenv.exe, versión: 12.0.21005.1, marca de tiempo: 0x524fcb34
Nombre del módulo con errores: KERNELBASE.dll, versión: 6.1.7601.18229, marca de tiempo: 0x51fb10c6
Código de excepción: 0xe0434352
Desplazamiento: 0x0000812f
Id. de proceso con errores: 0xe3c
Con errores de tiempo de inicio de la aplicación: 0x01cf0b21c6346ea8
Ruta de la aplicación con errores: C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
Ruta del módulo con errores: C:\Windows\system32\KERNELBASE.dll

Esto es seguido de un evento con .NET Runtime como origen con texto similar al:

Aplicación: devenv.exe
Versión de .NET Framework: v4.0.30319
Descripción: El proceso finalizó debido a una excepción no controlada.
Información de excepciones: System.Reflection.TargetInvocationException
Pila:
en System.RuntimeMethodHandle.InvokeMethod (System.Object, System.Object [], System.Signature, Boolean)
en System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (System.Object, System.Object [], System.Object[])
en System.Delegate.DynamicInvokeImpl(System.Object[])
en System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate, System.Object, Int32)
en MS. Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object, System.Delegate, System.Object, Int32, System.Delegate)
en System.Windows.Threading.DispatcherOperation.InvokeImpl()
en System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
en System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
en System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
en System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
en System.Windows.Threading.DispatcherOperation.Invoke()
en System.Windows.Threading.Dispatcher.ProcessQueue()
en System.Windows.Threading.Dispatcher.WndProcHook (IntPtr, Int32, IntPtr, IntPtr, ByRef booleano)
en MS. Win32.HwndWrapper.WndProc (IntPtr, Int32, IntPtr, IntPtr, ByRef booleano)
en MS. Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
en System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate, System.Object, Int32)
en MS. Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object, System.Delegate, System.Object, Int32, System.Delegate)
en System.Windows.Threading.Dispatcher.LegacyInvokeImpl (System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
en MS. Win32.HwndSubclass.SubclassWndProc (IntPtr, Int32, IntPtr, IntPtr)

Causa

Este problema se produce porque un código de cambio en el IDE de Visual Studio en 2013 y afecta a los documentos que no sean nombres de ruta de acceso válida, como la clase System.IO.File .NET analiza. Visual Studio puede producir una excepción System.ArgumentException al abrir estos documentos que asciende a través del IDE como el TargetInvocationException.

Solución

Puede evitar o solucionar temporalmente el problema asegurándose de que los nombres de documento son los nombres de archivo Win32 válidos.

Este problema se ha solucionado en Visual Studio 2013 actualización 2 y versiones posteriores de Visual Studio.

Más información

A continuación se muestra una pila de llamadas de ejemplo de la TargetInvocationException. Se trata de un archivo de volcado de proceso captura la excepción no controlada y se muestra en el depurador WindDdbg utilizando las extensiones de SOS para mostrar pilas de llamadas de excepción administrada:


Tipo de excepción CLR: System.Reflection.TargetInvocationException
"Ha sido excepción en el destino de la invocación."
ERROR: No se encontró el archivo de símbolos.  El valor predeterminado para exportar símbolos para C:\Windows\system32\KERNELBASE.dll-
eax=0027eb88 ebx=00000005 ecx=00000005 edx=00000000 esi=0027ec48 edi=00000001
EIP = 7528812f esp = ebp 0027eb88 = 0027ebd8 iopl = 0 nv de pe de ei pl nz CA nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200216
KERNELBASE!RaiseException+0x54:
deja c9 de 7528812f
0:000 >! loadby sos clr
0:000> !sos.PrintException
Objeto de excepción: 136eb7f8
Tipo de excepción: System.Reflection.TargetInvocationException
Mensaje: Se ha producido la excepción en el destino de una invocación.
InnerException: System.ArgumentException, uso! 136e9f10 de PrintException para ver más.
StackTrace (generado):
Función IP del SP
00000001 00000000 mscorlib_ni! System.RuntimeMethodHandle.InvokeMethod (System.Object, System.Object [], System.Signature, Boolean) + 0 x 2
¡Mscorlib_ni de 60D99BC1 de 0033BEC8! System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (System.Object, System.Object [], System.Object[])+0xc1
    0033BEEC 60D904B6 mscorlib_ni!System.Delegate.DynamicInvokeImpl(System.Object[])+0x76
    0033BF00 6079C5BD WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)+0xad
    0033BF20 6079C49A WindowsBase_ni!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)+0x3a
    0033BF64 6079EE4C WindowsBase_ni!System.Windows.Threading.DispatcherOperation.InvokeImpl()+0xac
    0033BF9C 6079ED88 WindowsBase_ni!System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)+0x38
    0033BFA4 60E14157 mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+0xa7
    0033C010 60E14096 mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+0x16
    0033C024 60E14051 mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+0x41
    0033C03C 6079EC9B WindowsBase_ni!System.Windows.Threading.DispatcherOperation.Invoke()+0x5b
    0033C074 6079B21B WindowsBase_ni!System.Windows.Threading.Dispatcher.ProcessQueue()+0x16b
¡WindowsBase_ni de 6079B3DA de 0033C0B8! System.Windows.Threading.Dispatcher.WndProcHook (IntPtr, Int32, IntPtr, IntPtr, ByRef booleano) + 0x5a
WindowsBase_ni de 6079C75B de 104 C 0033! MS. Win32.HwndWrapper.WndProc (IntPtr, Int32, IntPtr, IntPtr, ByRef booleano) + 0x9b
    0033C140 6079C6AB WindowsBase_ni!MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)+0x6b
    0033C150 6079C562 WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)+0x52
    0033C170 6079C49A WindowsBase_ni!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)+0x3a
    0033C1B4 6079AABE WindowsBase_ni!System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)+0x10e
WindowsBase_ni de 6079BFF1 208 C 0033! MS. Win32.HwndSubclass.SubclassWndProc (IntPtr, Int32, IntPtr, IntPtr) + 0xf1
00000001 00000000 System_Windows_Forms_ni! System.Windows.Forms.UnsafeNativeMethods+IMsoComponentManager.FPushMessageLoop (IntPtr, Int32, Int32) + 0 x 2
0033C4D8 5C35DFC7 System_Windows_Forms_ni!System.Windows.Forms.ComponentManagerProxy.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (IntPtr, Int32, Int32) + 0 x 27
    0033C4F0 5BBBF8D1 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)+0x155
    0033C540 5BBBF742 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)+0x4a
    0033C56C 5BB67004 System_Windows_Forms_ni!System.Windows.Forms.Application.DoEvents()+0x18
    0033C574 0682B972 MyAddin!Initialize()+0x6fa

StackTraceString: < Ninguno >
HResult: 80131604

La propiedad InnerException muestra el tiro de excepción inicial:

0:000> !PrintException 136e9f10
Objeto de excepción: 136e9f10
Tipo de excepción: System.ArgumentException
Mensaje: Caracteres no válidos en la ruta de acceso.
InnerException: < Ninguno >
StackTrace (generado):
Función IP del SP
    0033BA18 617FFD07 mscorlib_ni!System.IO.Path.CheckInvalidPathChars(System.String, Boolean)+0xa68db7
    0033BA28 60E05936 mscorlib_ni!System.IO.Path.GetExtension(System.String)+0x16
    0033BA40 6D60F8E7 Microsoft_VisualStudio_Shell_UI_Internal_ni!Microsoft.VisualStudio.Services.VsImageService.GetIconForFileEx(System.String, Microsoft.VisualStudio.Shell.Interop.__VSUIDATAFORMAT, Microsoft.VisualStudio.Shell.Interop.__VSIconSource ByRef)+0x3f
    0033BA64 6D60F88C Microsoft_VisualStudio_Shell_UI_Internal_ni!Microsoft.VisualStudio.Services.VsImageService.GetIconForFileEx(System.String, Microsoft.VisualStudio.Shell.Interop.__VSUIDATAFORMAT, UInt32 ByRef)+0x14
    0033BA74 16D5ABD8 Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.UtilityMethods.GetDocumentTabImage(System.String, Microsoft.VisualStudio.Shell.Interop.__TABIMAGEFLAGS ByRef)+0x38
    0033BA90 6DE8F8F6 Microsoft_VisualStudio_Platform_WindowManagement_ni!Microsoft.VisualStudio.Platform.WindowManagement.WindowFrame.UpdateDocumentIcon()+0x131e2a

StackTraceString: < Ninguno >
HResult: 80070057

Una causa conocida es tener incrustados entre comillas en el nombre del documento. C# código de ejemplo que se muestra la excepción interna es como sigue:

static void Main(string[] args) { string path = null; path = @"A09F9925-32BC-47E1-9DC0-1F71C64E9A6E@SAMPLE.""ADEFUSR0"""; string extension = System.IO.Path.GetExtension(path); }

Este código producirá la excepción System.ArgumentException en la llamada GetExtension.

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×