c# - Visual Studio Xamarin.Forms 调试:如何进入外部库方法?
问题描述
有时会从 Xamarin.Forms 外部库内部引发异常,并且在调试器中查看相关的局部变量将非常有帮助,就像我们在自己的代码中一样。
这是我当前的 Android iOS 项目头痛的堆栈跟踪:
System.InvalidCastException: Specified cast is not valid.
at Xamarin.Forms.BindableLayoutController.CreateItemView (System.Object item, Xamarin.Forms.DataTemplate dataTemplate) [0x00003] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:261
at Xamarin.Forms.BindableLayoutController.CreateItemView (System.Object item, Xamarin.Forms.Layout`1[T] layout) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:254
at Xamarin.Forms.BindableLayoutController.CreateChildren () [0x00040] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:234
at Xamarin.Forms.BindableLayoutController.SetItemTemplate (Xamarin.Forms.DataTemplate itemTemplate) [0x0005a] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:180
at Xamarin.Forms.BindableLayoutController.set_ItemTemplate (Xamarin.Forms.DataTemplate value) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:127
at Xamarin.Forms.BindableLayout+<>c.<.cctor>b__19_1 (Xamarin.Forms.BindableObject b, System.Object o, System.Object n) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:16
at Xamarin.Forms.BindableObject.SetValueActual (Xamarin.Forms.BindableProperty property, Xamarin.Forms.BindableObject+BindablePropertyContext context, System.Object value, System.Boolean currentlyApplying, Xamarin.Forms.Internals.SetValueFlags attributes, System.Boolean silent) [0x00120] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:463
at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty property, System.Object value, Xamarin.Forms.Internals.SetValueFlags attributes, Xamarin.Forms.BindableObject+SetValuePrivateFlags privateAttributes) [0x00173] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:397
at Xamarin.Forms.BindableObject.SetValue (Xamarin.Forms.BindableProperty property, System.Object value, System.Boolean fromStyle, System.Boolean checkAccess) [0x00042] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:334
at Xamarin.Forms.BindableObject.SetValue (Xamarin.Forms.BindableProperty property, System.Object value) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:311
at Xamarin.Forms.BindableLayout.SetItemTemplate (Xamarin.Forms.BindableObject b, Xamarin.Forms.DataTemplate value) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableLayout.cs:45
at SecretProjectName.Views.YourAmazingClassPage..ctor () [0x0005b] in C:\Users\UserName\source\repos\SecretProjectName\SecretProjectName\SecretProjectName\Views\YourAmazingClassPage.xaml.cs:20
at (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo.InternalInvoke(System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:936
除了将 Xamarin.Forms 源代码分叉到我的项目中之外,还有其他方法吗?
解决方案
DLL 始终被编译,因此您无法介入。它们的源代码中不包含您(或其他人)的代码,它在编译过程中被修改。
推荐阅读
- reactjs - React Redux Auth 中间件
- python - 独立于维度的 Numpy 花式/高级索引
- excel - Excel 2016 VBA - 更高效地创建仪表板
- python - Django rest 框架:从外部包中捕获 ValidationError
- javascript - Angular ng-repeat 表:来自对象的动态列
- angular - Angular Cli 错误:位置 1008 的 JSON 中的意外标记]
- java - 如何在运行时从数据库动态加载身份提供者 (IdP) Sprint Security SAML
- python - IntelliJ 无法导入模块,但从命令行可以正常工作
- r - 更新输入函数包
- javascript - 移动响应式下拉导航栏适用于小宽度浏览器,但不适用于我的手机