Xamarin Studio 是否允许以比这更简单的方式调试库 (dll) 项目?
Does Xamarin Studio allow debugging a library (dll) project in an easier way than this?
我正在开发一个名为 child.dll
的 C# dll,它将由另一个名为 parent.exe
的第 3 方 C# 可执行程序加载。我无法访问 parent.exe
.
的源代码
在 Visual Studio 上,当我想调试我的 dll 项目时,我只需将调试器附加到 parent.exe
即可。我找不到在 Xamarin Studio 上执行此操作的简单方法。
我现在正在做的是:
- 设置环境变量
MONODEVELOP_SDB_TEST=1
以启用 "Custom Command Mono Soft Debugger"
- 使用与第一步相同的终端启动 Xamarin Studio。
- 在 Xamarin Studio 选项 -> 调试器中取消选中 "Debug project code only; do not step into framework code"
- 在我的
child.dll
的相同解决方案中添加一个虚拟 exe 项目。这是因为 Xamarin Studio 不允许 "Run with" 作为库项目类型。通过这样做,我现在可以访问 Xamarin Studio 的 "Run with" 功能。
- 构建整个解决方案,将
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
我正在寻找一种方法,让我公司的其他开发人员能够在 parent.exe
下创建和调试他们自己的 child.dll
。我认为唯一不能接受的是第四步,这对他们来说没有任何意义。
有没有人遇到和我一样的问题?你是如何实现目标的?
更新信息
我把问题简单化了。在实际场景中,我没有自己管理 parent.exe。 parent.exe
已经 运行ning(使用这个确切的命令 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 的开发人员的工作流程是创建一个 dll 来定义框架需要的一些 API。然后,将dll注入框架。
右键单击库项目,然后单击项目选项 -> 运行 -> 自定义命令。在组合中,select执行并输入parent.exe的路径。现在您将能够 "run" 库,调试器将在您放置在库代码中的断点处停止。
我正在开发一个名为 child.dll
的 C# dll,它将由另一个名为 parent.exe
的第 3 方 C# 可执行程序加载。我无法访问 parent.exe
.
在 Visual Studio 上,当我想调试我的 dll 项目时,我只需将调试器附加到 parent.exe
即可。我找不到在 Xamarin Studio 上执行此操作的简单方法。
我现在正在做的是:
- 设置环境变量
MONODEVELOP_SDB_TEST=1
以启用 "Custom Command Mono Soft Debugger" - 使用与第一步相同的终端启动 Xamarin Studio。
- 在 Xamarin Studio 选项 -> 调试器中取消选中 "Debug project code only; do not step into framework code"
- 在我的
child.dll
的相同解决方案中添加一个虚拟 exe 项目。这是因为 Xamarin Studio 不允许 "Run with" 作为库项目类型。通过这样做,我现在可以访问 Xamarin Studio 的 "Run with" 功能。 - 构建整个解决方案,将
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
我正在寻找一种方法,让我公司的其他开发人员能够在 parent.exe
下创建和调试他们自己的 child.dll
。我认为唯一不能接受的是第四步,这对他们来说没有任何意义。
有没有人遇到和我一样的问题?你是如何实现目标的?
更新信息
我把问题简单化了。在实际场景中,我没有自己管理 parent.exe。 parent.exe
已经 运行ning(使用这个确切的命令 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 的开发人员的工作流程是创建一个 dll 来定义框架需要的一些 API。然后,将dll注入框架。
右键单击库项目,然后单击项目选项 -> 运行 -> 自定义命令。在组合中,select执行并输入parent.exe的路径。现在您将能够 "run" 库,调试器将在您放置在库代码中的断点处停止。