我正在开发一个名为 的 C# dll,child.dll
它将由另一个名为parent.exe
. 我无权访问parent.exe
.
在 Visual Studio 上,当我想调试我的 dll 项目时,我只需要将调试器附加到parent.exe
可以了。我找不到在 Xamarin Studio 上执行此操作的简单方法。
我现在正在做的是:
- 设置 env var
MONODEVELOP_SDB_TEST=1
以启用“自定义命令单声道软调试器” - 使用与第一步相同的终端启动 Xamarin Studio。
- 在 Xamarin Studio 选项 -> 调试器中取消选中“仅调试项目代码;不要单步执行框架代码”
- 在我的
child.dll
. 这是因为 Xamarin Studio 不允许库项目类型的“运行方式”。通过这样做,我现在可以访问 Xamarin Studio 的“运行方式”功能。 - 构建整个解决方案,复制
child.dll
到parent.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
) - 将虚拟项目设置为启动项目
- 使用 > Custom Command Mono Soft Debugger 运行并连接到 127.0.0.1:55555
我正在寻找一种方法让我公司中的其他开发人员能够child.dll
在parent.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 注入框架。