我的包裹没有加载。我如何解释 activity 日志
My package did not load. How can I interpret the activity log
我的 VSPackage 没有为一个用户正确加载到 Visual Studio 2019。
用户向我发送了部分 activity 日志:
<entry>
<record>2206</record>
<time>2019/12/13 10:44:12.579</time>
<type>Information</type>
<source>VisualStudio</source>
<description>Begin package load [MultiLanguagePackage]</description>
<guid>{8FA8895A-868F-4319-82FD-A4805D8953CE}</guid>
</entry>
<entry>
<record>2207</record>
<time>2019/12/13 10:44:12.616</time>
<type>Error</type>
<source>VisualStudio</source>
<description>SetSite failed for package [MultiLanguagePackage]
Source: 'Microsoft.VisualStudio.Shell.15.0';
Description: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
System.NullReferenceException:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei Microsoft.VisualStudio.Shell.DialogPage.SetPropertyValue(PropertyDescriptor descriptor, Object automationObject, Object value)
bei Microsoft.VisualStudio.Shell.DialogPage.LoadSettingFromStorage(PropertyDescriptor prop)
bei Microsoft.VisualStudio.Shell.DialogPage.LoadSettingsFromStorage()
bei Microsoft.VisualStudio.Shell.DialogPage.set_Site(ISite value)
bei System.ComponentModel.Container.Add(IComponent component, String name)
bei System.ComponentModel.Container.Add(IComponent component)
bei Microsoft.VisualStudio.Shell.Package.GetDialogPage(Type dialogPageType)
bei MultiLangServices.SettingsService.InitOptionsPages(Package p) in C:\VSPackage_Version_7_1\Project\MultiLangServices\Services\SettingsService.cs:Zeile 24.
bei MultiLanguage2019.MultiLanguagePackage.<InitializeAsync>d__2.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Microsoft.VisualStudio.Shell.AsyncPackage.<>c__DisplayClass20_0.<<Microsoft-VisualStudio-Shell-Interop-IAsyncLoadablePackageInitialize-Initialize>b__1>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Microsoft.VisualStudio.Shell.UIThreadReentrancyScope.WaitOnTaskCompleteInternal(Task task, CancellationToken cancel, Int32 ms)
bei Microsoft.VisualStudio.Services.VsTask.<>c__DisplayClass100_1.<InternalGetResult>b__1()
bei Microsoft.VisualStudio.Services.VsTask.IgnoreObjectDisposedException(Action action)
bei Microsoft.VisualStudio.Services.VsTask.<>c__DisplayClass100_0.<InternalGetResult>b__0()
bei Microsoft.VisualStudio.Services.VsTask.<>c__DisplayClass108_0.<InvokeWithWaitDialog>b__0()
bei Microsoft.VisualStudio.Services.VsTask.InvokeWithWaitDialog[T](Func`1 function)
bei Microsoft.VisualStudio.Services.VsTask.InvokeWithWaitDialog(Action action)
bei Microsoft.VisualStudio.Services.VsTask.InternalGetResult(Boolean ignoreUIThreadCheck)
bei Microsoft.VisualStudio.Services.VsTask.GetResult()</description>
<guid>{8FA8895A-868F-4319-82FD-A4805D8953CE}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
<entry>
<record>2208</record>
<time>2019/12/13 10:44:12.618</time>
<type>Error</type>
<source>VisualStudio</source>
<description>End package load [MultiLanguagePackage]</description>
<guid>{8FA8895A-868F-4319-82FD-A4805D8953CE}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
我该如何解读这些信息?
它是否包含指向错误原因的有用指针?
我的程序包包含对 NuGet 程序包 Micorosft.VisualStudio.SDK 版本 16.0.202 的引用。
它不包含对 Microsoft.VisualStudio.Shell.15.0
的具体引用
我假设 MultiLanguageService
class 属于您的包实现 - 它正在做一些导致 NullReferenceException
的事情。这样的错误应该很容易定位;堆栈跟踪告诉您 MultiLangServices.SettingsService.InitOptionsPages(Package p) in ...SettingsService.cs:Zeile 24
中出现了问题。只需在第 24 行放置一个断点并验证一切是否按预期运行。
我认为它与您引用的某个 SDK 包或程序集无关。如果代码适用于大多数用户,那么代码中一定有某些东西在某些情况下可能会失败;例如,如果缺少配置值,则会导致报告的 NullReferenceException
异常。我会检查实现并至少添加一个适当的异常处理程序,以便下次向 activity-log.
报告更精确的错误
我的 VSPackage 没有为一个用户正确加载到 Visual Studio 2019。
用户向我发送了部分 activity 日志:
<entry>
<record>2206</record>
<time>2019/12/13 10:44:12.579</time>
<type>Information</type>
<source>VisualStudio</source>
<description>Begin package load [MultiLanguagePackage]</description>
<guid>{8FA8895A-868F-4319-82FD-A4805D8953CE}</guid>
</entry>
<entry>
<record>2207</record>
<time>2019/12/13 10:44:12.616</time>
<type>Error</type>
<source>VisualStudio</source>
<description>SetSite failed for package [MultiLanguagePackage]
Source: 'Microsoft.VisualStudio.Shell.15.0';
Description: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
System.NullReferenceException:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei Microsoft.VisualStudio.Shell.DialogPage.SetPropertyValue(PropertyDescriptor descriptor, Object automationObject, Object value)
bei Microsoft.VisualStudio.Shell.DialogPage.LoadSettingFromStorage(PropertyDescriptor prop)
bei Microsoft.VisualStudio.Shell.DialogPage.LoadSettingsFromStorage()
bei Microsoft.VisualStudio.Shell.DialogPage.set_Site(ISite value)
bei System.ComponentModel.Container.Add(IComponent component, String name)
bei System.ComponentModel.Container.Add(IComponent component)
bei Microsoft.VisualStudio.Shell.Package.GetDialogPage(Type dialogPageType)
bei MultiLangServices.SettingsService.InitOptionsPages(Package p) in C:\VSPackage_Version_7_1\Project\MultiLangServices\Services\SettingsService.cs:Zeile 24.
bei MultiLanguage2019.MultiLanguagePackage.<InitializeAsync>d__2.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Microsoft.VisualStudio.Shell.AsyncPackage.<>c__DisplayClass20_0.<<Microsoft-VisualStudio-Shell-Interop-IAsyncLoadablePackageInitialize-Initialize>b__1>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Microsoft.VisualStudio.Shell.UIThreadReentrancyScope.WaitOnTaskCompleteInternal(Task task, CancellationToken cancel, Int32 ms)
bei Microsoft.VisualStudio.Services.VsTask.<>c__DisplayClass100_1.<InternalGetResult>b__1()
bei Microsoft.VisualStudio.Services.VsTask.IgnoreObjectDisposedException(Action action)
bei Microsoft.VisualStudio.Services.VsTask.<>c__DisplayClass100_0.<InternalGetResult>b__0()
bei Microsoft.VisualStudio.Services.VsTask.<>c__DisplayClass108_0.<InvokeWithWaitDialog>b__0()
bei Microsoft.VisualStudio.Services.VsTask.InvokeWithWaitDialog[T](Func`1 function)
bei Microsoft.VisualStudio.Services.VsTask.InvokeWithWaitDialog(Action action)
bei Microsoft.VisualStudio.Services.VsTask.InternalGetResult(Boolean ignoreUIThreadCheck)
bei Microsoft.VisualStudio.Services.VsTask.GetResult()</description>
<guid>{8FA8895A-868F-4319-82FD-A4805D8953CE}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
<entry>
<record>2208</record>
<time>2019/12/13 10:44:12.618</time>
<type>Error</type>
<source>VisualStudio</source>
<description>End package load [MultiLanguagePackage]</description>
<guid>{8FA8895A-868F-4319-82FD-A4805D8953CE}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
我该如何解读这些信息?
它是否包含指向错误原因的有用指针?
我的程序包包含对 NuGet 程序包 Micorosft.VisualStudio.SDK 版本 16.0.202 的引用。
它不包含对 Microsoft.VisualStudio.Shell.15.0
的具体引用我假设 MultiLanguageService
class 属于您的包实现 - 它正在做一些导致 NullReferenceException
的事情。这样的错误应该很容易定位;堆栈跟踪告诉您 MultiLangServices.SettingsService.InitOptionsPages(Package p) in ...SettingsService.cs:Zeile 24
中出现了问题。只需在第 24 行放置一个断点并验证一切是否按预期运行。
我认为它与您引用的某个 SDK 包或程序集无关。如果代码适用于大多数用户,那么代码中一定有某些东西在某些情况下可能会失败;例如,如果缺少配置值,则会导致报告的 NullReferenceException
异常。我会检查实现并至少添加一个适当的异常处理程序,以便下次向 activity-log.