Xamarin.Forms项目与VS 2019引用的调试dll

时间:2020-04-27 13:34:41

标签: c# android xamarin.forms dll visual-studio-2019

我有一个Xamarin.Forms项目,并引用了我编写的dll。不知道从什么时候开始,但是现在我无法在dll中设置断点或进入dll。我直接在Android平板电脑上调试。

首先,我收到消息

您的应用已进入中断状态,但由于所有线程都在执行外部代码(通常是系统代码或框架代码),因此没有可显示的代码。

然后,我更改了调试选项,并且未选中“启用我的代码”。现在我得到了

没有运行兼容的代码
所选的调试引擎不支持在当前线程上执行的任何代码(例如,仅执行本机运行时代码)。

我检查了this post中的解决方案,但到目前为止,它们都无效:

  • pdb文件位于dll所在的同一位置
  • 未选中“启用我的代码”
  • “构建”>“配置管理器”(Xamarin.Forms项目以及库)下处于调试模式的所有内容
  • 取消选中“要求源文件与原始版本完全匹配”和“跳过属性和运算符”
  • 重新启动VS
  • 干净的解决方案并重建
  • 按照here所述清洁%USERPROFILE%\AppData\Local\Temp
  • 在XF解决方案项目选项中选中了“启用本机代码调试”
  • 重新启动PC
  • 从设备中删除了应用程序和支持库
  • 尝试了另一台设备,包括模拟器

它总是这样工作:

  • 检查了对正确dll版本的引用(带有重建)
  • 从dll项目中打开* .cs文件
  • 设置断点或进入dll并玩得开心

现在不行了,我的想法不尽如人意。我正在使用Visual Studio 2019(v 16.5.4)。它确实适用于项目参考,但是我不想每次都更改设置。还是在VS 2019中删除了此功能(调试引用的dll)?

1 个答案:

答案 0 :(得分:0)

在实现CrossMediaManager插件时,遇到了很多错误,发现很多实例都应该在应用程序构造函数(即CrossMediaManager.Current.Init();)中启动。在下面的代码示例中:

 public App()
        {
            InitializeComponent();    
            DependencyService.Register<MockDataStore>();
            CrossMediaManager.Current.Init();
            MainPage = new Audio();  
        }