Visual Studio Add-in treo với một thông báo lỗi "TargetInvocationException"

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 2923556
Triệu chứng
Khi chạy một Add-in hoặc tích hợp gói, Microsoft Visual Studio 2013 bất ngờ có thể chấm dứt với một ngoại lệ không được loại System.Reflection.TargetInvocationException.

Trong sổ ghi sự kiện ứng dụng, bạn sẽ thấy một lỗi ứng dụng với văn bản tương tự như:

Faulting ứng dụng tên: devenv.exe, phiên bản: 12.0.21005.1, thời gian đóng dấu: 0x524fcb34
Faulting module tên: KERNELBASE.dll, phiên bản: 6.1.7601.18229, thời gian đóng dấu: 0x51fb10c6
Mã ngoại lệ: 0xe0434352
Lỗi offset: 0x0000812f
Faulting quá trình id: 0xe3c
Faulting ứng dụng thời gian bắt đầu: 0x01cf0b21c6346ea8
Faulting ứng dụng đường dẫn: C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
Faulting module đường dẫn: C:\Windows\system32\KERNELBASE.dll

Đây là kết quả sự kiện byan với NET Runtime là withtext nguồn tương tự như:

Ứng dụng: devenv.exe
Framework phiên bản: v4.0.30319
Trò chơi mô tả: Trình bị chấm dứt do một ngoại lệ không được.
Thông tin ngoại lệ: System.Reflection.TargetInvocationException
Ngăn xếp:
tại System.RuntimeMethodHandle.InvokeMethod (System.Object, System.Object [], System.Signature, Boolean)
tại System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal (System.Object, [] System.Object, System.Object[])
tại System.Delegate.DynamicInvokeImpl(System.Object[])
tại System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate, System.Object, Int32)
tại MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object, System.Delegate, System.Object, Int32, System.Delegate)
tại System.Windows.Threading.DispatcherOperation.InvokeImpl()
tại System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
tại System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
tại System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
tại System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
tại System.Windows.Threading.DispatcherOperation.Invoke()
tại System.Windows.Threading.Dispatcher.ProcessQueue()
tại System.Windows.Threading.Dispatcher.WndProcHook (IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
tại MS.Win32.HwndWrapper.WndProc (IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
tại MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
tại System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate, System.Object, Int32)
tại MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object, System.Delegate, System.Object, Int32, System.Delegate)
tại System.Windows.Threading.Dispatcher.LegacyInvokeImpl (System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
tại MS.Win32.HwndSubclass.SubclassWndProc (IntPtr, Int32, IntPtr, IntPtr)
Nguyên nhân
Thisissue xảy ra bởi vì một mã số thay đổi trong Visual Studio IDE vào năm 2013 và ảnh hưởng đến tài liệu mà không phải là đường dẫn hợp lệ tên như phân tích cú pháp bởi lớp .NET System.IO.File. Visual Studio có thể ném một System.ArgumentException khi mở các tài liệu mà bubbled lên thông qua IDE như TargetInvocationException.
Giải pháp
Bạn có thể tránh hoặc làm việc xung quanh vấn đề bằng cách đảm bảo rằng tên tài liệu của bạn là hợp lệ Win32 tập đã đặt tên tin.

Vấn đề này đã được cố định trong Visual Studio 2013 Update 2 và các phiên bản sau này của Visual Studio.
Thông tin thêm
Một ví dụ gọi ngăn xếp của TargetInvocationException được hiển thị dưới đây. Điều này là từ một tệp kết xuất trình bị bắt trên ngoại lệ không được và hiển thị trong trình gỡ lỗi WindDdbg bằng cách sử dụng tiện ích mở rộng SOS Hiển thị được quản lý ngoại lệ cuộc gọi ngăn xếp:


CLR ngoại lệ loại: System.Reflection.TargetInvocationException
"Ngoại lệ đã được ném bởi mục tiêu của một invocation."
LỖI: Biểu tượng tập tin không thể được tìm thấy. cài đặt chuyên biệt sẵn để xuất khẩu biểu tượng cho C:\Windows\system32\KERNELBASE.dll-
eax = 0027eb88 ebx = 00000005 ecx = 00000005 edx = 00000000 esi = 0027ec48 edi = 00000001
EIP = 7528812f esp = 0027eb88 ebp = 0027ebd8 iopl = 0 nv lên ei pl nz ac pe nc
CS = 001b ss = 0023 ds = 0023 es = gs 0023 fs = 003b = 0000 efl = 00200216
KERNELBASE!RaiseException + 0x54:
7528812f c9 để lại
0:000 >! loadby sos clr
0:000 >! sos.PrintException
Ngoại lệ đối tượng: 136eb7f8
Ngoại lệ loại: System.Reflection.TargetInvocationException
Tin nhắn: Ngoại lệ đã được ném bởi mục tiêu của một invocation.
InnerException: System.ArgumentException, sử dụng!PrintException 136e9f10 để xem chi tiết.
StackTrace (tạo):
SP IP chức năng
00000000 00000001 mscorlib_ni!System.RuntimeMethodHandle.InvokeMethod (System.Object, System.Object [], System.Signature, Boolean) + 0x2
0033BEC8 60D99BC1 mscorlib_ni!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
0033 C 010 60E14096 mscorlib_ni!System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x16
0033 C 024 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
0033C 074 6079B21B WindowsBase_ni!System.Windows.Threading.Dispatcher.ProcessQueue () + 0x16b
0033C0B8 6079B3DA WindowsBase_ni!System.Windows.Threading.Dispatcher.WndProcHook (IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) + 0x5a
0033 C 104 6079C75B WindowsBase_ni! MS.Win32.HwndWrapper.WndProc (IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) + 0x9b
0033 C 140 6079C6AB WindowsBase_ni! MS.Win32.HwndSubclass.DispatcherCallbackOperation (System.Object) + 0x6b
0033C 150 6079C 562 WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate, System.Object, Int32) + 0x52
0033 C 170 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
0033 C 208 6079BFF1 WindowsBase_ni! MS.Win32.HwndSubclass.SubclassWndProc (IntPtr, Int32, IntPtr, IntPtr) + 0xf1
00000000 00000001 System_Windows_Forms_ni!System.Windows.Forms.UnsafeNativeMethods+IMsoComponentManager.FPushMessageLoop (IntPtr, Int32, Int32) + 0x2
0033C4D8 5C35DFC7 System_Windows_Forms_ni!System.Windows.Forms.ComponentManagerProxy.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (IntPtr, Int32, Int32) + 0x27
0033C4F0 5BBBF8D1 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner (Int32, System.Windows.Forms.ApplicationContext)+0x155
0033 C 540 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
0033 C 574 0682B972 MyAddin!Khởi tạo () + 0x6fa

StackTraceString:<none>
HResult: 80131604

InnerException cho thấy ném ngoại lệ ban đầu:

0:000 >!PrintException 136e9f10
Ngoại lệ đối tượng: 136e9f10
Ngoại lệ loại: System.ArgumentException
Thông báo: Bất hợp pháp nhân vật trong đường dẫn.
InnerException:<none>
StackTrace (tạo):</none></none>BR / > SP IP chức năng
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:<none>
HResult: 80070057

Một rõ nguyên nhân của điều này là để có nhúng vào dấu kiểm ngoặc kép trong tên tài liệu. Ví dụ C# mã đó chứng tỏ ngoại lệ bên trong là như sau:</none>
static void Main(string[] args){ string path = null; path = @"A09F9925-32BC-47E1-9DC0-1F71C64E9A6E@SAMPLE.""ADEFUSR0"""; string extension = System.IO.Path.GetExtension(path);}
Mã này sẽ ném System.ArgumentException của cuộc gọi GetExtension.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 2923556 - Xem lại Lần cuối: 06/26/2014 04:00:00 - Bản sửa đổi: 2.0

Microsoft Visual Studio Premium 2013, Microsoft Visual Studio Professional 2013, Microsoft Visual Studio Ultimate 2013

  • kbmt KB2923556 KbMtvi
Phản hồi