3

我正在开发一个名为 的 C# dll,child.dll它将由另一个名为parent.exe. 我无权访问parent.exe.

在 Visual Studio 上,当我想调试我的 dll 项目时,我只需要将调试器附加到parent.exe可以了。我找不到在 Xamarin Studio 上执行此操作的简单方法。

我现在正在做的是:

  1. 设置 env varMONODEVELOP_SDB_TEST=1以启用“自定义命令单声道软调试器”
  2. 使用与第一步相同的终端启动 Xamarin Studio。
  3. 在 Xamarin Studio 选项 -> 调试器中取消选中“仅调试项目代码;不要单步执行框架代码”
  4. 在我的child.dll. 这是因为 Xamarin Studio 不允许库项目类型的“运行方式”。通过这样做,我现在可以访问 Xamarin Studio 的“运行方式”功能。
  5. 构建整个解决方案,复制child.dllparent.exe想要的位置并运行mono --debug --debugger-agent=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:55555 parent.exe parent-args。(Parent.exe将加载child.dll
  6. 将虚拟项目设置为启动项目
  7. 使用 > Custom Command Mono Soft Debugger 运行并连接到 127.0.0.1:55555

我正在寻找一种方法让我公司中的其他开发人员能够child.dllparent.exe. 我认为唯一不可接受的步骤是第四步,这对他们没有任何意义。

有人遇到和我一样的问题吗?你是如何实现目标的?

更新信息

我过度简化了这个问题。在实际场景中,我自己没有管理 parent.exe。parent.exe已经运行(使用这个确切的命令mono --debug --debugger-agent=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:55555 parent.exe parent-args),它由另一个程序启动(Process.Start)作为整个框架的一部分。

基本上,创建 child.dll 的开发人员的工作流程是创建一个定义框架需要的一些 API 的 dll。然后,将 dll 注入框架。

4

1 回答 1

4

右键单击库项目,然后单击项目选项 -> 运行 -> 自定义命令。在组合中,选择执行并输入 parent.exe 的路径。现在您将能够“运行”该库,并且调试器将在您在库代码中放置的断点处停止。

于 2015-06-26T13:21:23.170 回答