c# - 从外部程序调用 C# 应用程序时未命中断点

标签 c# visual-studio robotframework ironpython visual-studio-debugging

我能够使用 IronPython 从 Robot Framework 成功调用 C# 方法,但是我在 C# 端遇到一些运行时错误,我想使用 Visual Studio 进行调试。当通过外部程序/脚本调用 C# 应用程序的方法时,是否可以使用 Visual Studio 调试 C# 应用程序?

我已使用“启动外部程序”在 Visual Studio 中配置了我的 C# 项目(提供了外部程序所需的机器人可执行路径和参数)。当我开始调试时,我的外部程序按预期执行,C# 方法也成功执行。但是,我在 Visual Studio 中设置的断点没有被命中。

在使用“启动外部程序”时,我是否遗漏了任何细节?我的 python 脚本(外部程序)正在从构建 C# 项目时生成它的同一位置导入 DLL。 PDB 文件也可以在与 DLL 相同的文件夹中使用。

最佳答案

对我来说,断点没有命中,因为我没有附加正确的过程。让我详细解释一下,以便其他用户了解根本原因。

正如我在问题中提到的,我使用 IronPython 从 Robot Framework 调用 C# 方法。因此,我使用了 robots.exe(机器人框架可执行文件)作为我的外部程序(在 Visual Studio 中),并且我希望在 C# 项目下命中我的断点。然而问题是 C# 方法由 ipy.exe (Iron Python) 执行,而不是由 robots.exe 执行。看起来 Robot Framework 在内部启动 ipy.exe 进程,然后 ipy 进程调用 C# 方法。这意味着我应该将 ipy.exe 进程附加到我的 C# 项目,以便每当断点命中时控制权都会转移到 Visual Studio。

为了达到同样的目的,我做了以下事情。我已在 C# 代码开头插入 Debug.Assert 以停止执行。现在我已经启动了外部程序(机器人框架测试用例),然后在执行过程中,由于 C# 项目中的 Debug.Assert 语句而出现消息框。此时,我已使用 Visual Studio 使用“调试”->“附加到进程”将 ipy.exe(Iron Python) 进程附加到我的 C# 项目。之后,当我忽略消息框继续执行代码时,控制权就会转到 Visual Studio 中的断点。

关于c# - 从外部程序调用 C# 应用程序时未命中断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57182412/

相关文章:

python - 在 Safari 上使用机器人框架上传文件

python - 从机器人框架中的套件设置中调用 python 文件

c# - 防止 ASP.NET Web 应用程序上的 SQL 注入(inject)

c# - 我在带有选项卡的 C# GUI 中遇到焦点问题

c# - 命名空间等中不存在类型或命名空间名称

visual-studio - 调试时VS错误

c# - 无法在 Linux 上使用 Visual Studio Code 调试 C# 测试

c# - Visual Studio 2015 构建需要很长时间

visual-studio-2010 - 如果我想在同一个工作区中复制我的 c# 项目,我该怎么做?

appium - 如何打开和关闭应用程序并仍然记录每个测试用例? (机器人框架/AppiumLibrary)