调试属于另一个进程的项目程序集

Debugging a Project Assembly Which is Part of Another Process

我有一个包含多个 C# 项目的解决方案。其中一个项目是可执行文件,其余是 DLL。

问题是,有些项目实际上 运行 与可执行启动项目不在同一进程中。这是因为一些项目实际上是 WCF 服务的扩展,允许该服务与可执行文件一起玩。

我的问题是:是否可以以任何方式、形状或形式在所述项目中设置断点?我知道 "attach to process" 的能力,但我不确定它是否适合我。

我想:

编辑:我不确定 'attach to process' 是否适合我的唯一原因是因为我对该功能没有什么经验——也许我应该使用它?我还能加载 .pdb 文件吗?

编辑 2:如果其中一位评论者想提交他们的评论作为答案,我会接受

附加到 WCF 服务似乎是完成这项工作的确切工具:

  1. 它允许您附加到 运行 进程,即使您只有该进程的 plugin/extension 的代码和 PDB。您可以在自己的代码中设置断点,当第 3 方进程调用它们时,它们将被命中。

  2. 您可以从现有的 VS 实例附加到任何进程,即使该实例用于调试不同的可执行文件,在本例中是您的主 EXE 项目。您可以开始调试您的应用程序,然后在进行服务调用之前附加到该服务。

请确保,尽管 WCF 服务调用的 DLL 与您在 VS 实例中调用的 DLL 相同 - 如果它们是从与 VS 构建输出相同的位置调用的,则不会有问题。如果不是,请确保它们同步。