【问题标题】:Debug dll referenced by Xamarin.Forms project with VS 2019使用 VS 2019 调试 Xamarin.Forms 项目引用的 dll
【发布时间】:2020-10-20 02:48:05
【问题描述】:

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

首先,我收到了消息

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

然后我更改了调试选项并取消选中“仅启用我的代码”。现在我明白了

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

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

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

它总是这样工作:

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

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

【问题讨论】:

  • 您配置了哪种 pdb 类型(共享代码/应用程序)?应该是set to "portable"
  • 我从 Droid 项目中编辑了 csproj,并将 DebugType 的值从 full 更改为 portable,但仍然是同样的问题。还是我应该在其他地方更改它?
  • 尝试“pdbonly”作为设置
  • 这也没有帮助。
  • @testing 找了一篇关于调试dll的文章,大家可以看看:docs.microsoft.com/en-us/visualstudio/debugger/…

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


【解决方案1】:

我在实现CrossMediaManager插件时遇到了同样的错误,经过大量搜索,发现应该在应用程序构造函数中启动实例,即CrossMediaManager.Current.Init();在下面的代码示例中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多