是否可以同时调试Silverlight和WCF项目?

时间:2009-09-11 21:38:35

标签: .net wcf silverlight debugging breakpoints

我的解决方案中有3个项目:1)Silverlight应用程序项目2)ASP.Net Web应用程序项目3)WCF服务应用程序。项目1和2具有对项目3的服务引用。绑定类型是basicHTTPbinding。

如果我将项目2设置为启动项目,我将在项目1和项目中设置断点。项目3中有2个被击中,但没有中断点。

如果我将项目3设置为启动项目,我仍然可以使用我的客户端应用程序,并且项目3中的断点被击中但不是项目1中的断点。 2.

我希望能够在我的解决方案的所有项目中设置断点,无论选择启动项目是什么,都可以使用它们。我已经尝试在WCF项目上启用跟踪并在异常中包含详细信息;都没有奏效。有什么建议吗?

5 个答案:

答案 0 :(得分:1)

您是否已检入“调试|附加进程”对话框以查看VS已附加到哪些进程?

我怀疑它没有附加到运行WCF服务的开发Web服务器上。如果已经开始使用ASP.NET应用程序,请尝试将附件添加到其他开发Web服务。

答案 1 :(得分:0)

您尚未提及单元测试,但如果每个单独的项目都包含一套单元测试,您可以对每个项目的个别行为更有信心,因此您的集成测试会更加简单

在具有如此多活动部件的应用程序中,您所描述的断点修复测试非常困难,并且不可重复。

答案 2 :(得分:0)

根据你的描述(我可能错了),听起来你至少有两个不同的应用程序,即进程。虽然显然可以在Visual Studio的单个实例中调试多个进程(请参阅here),但这并不是我曾经做过的事情(甚至是为此而设想的)。

我通常为每个要调试的进程运行调试器的实例。一种简单的方法是将以下代码行放在每个应用程序的主启动函数中:

System.Diagnostics.Debugger.Break();

从Windows资源管理器运行应用程序时,系统会提示您选择所需的调试器。只需为要调试的每个应用程序创建一个新的调试器实例,然后就可以从那里设置断点。

感谢Peter Oehlert纠正我原来的评论。

答案 3 :(得分:0)

你绝对可以附加到所有3个进程,但我不确定所有3个进程的透明步骤是否会发生。

使用当前设置,然后选择Debug-> Attach to Process添加您的WCF项目。此时,您可以尝试从ASP或Silverlight端进入WCF服务主机,看看它是否将无缝转换。我认为这可能有2个进程限制,所以如果失败,你可以在你的WCF项目的界面设置一个断点,当你在ASP或SL项目中跳过时,你的断点就会被击中。 / p>

每当在任何进程中遇到断点时,调试器将同时停止所有进程。您可以使用Debug->迁移每个进程的位置。 Windows - >进程和调试 - > Windows - >线程将允许您在每个进程中切换线程。

答案 4 :(得分:0)

有几种方法可以做到这一点。

1)两个Visual Studio实例同时打开。在单独的解决方案中使用Web服务和数据访问还有其他几个优点。如果你这样做,你甚至可以编辑一个而另一个正在运行,这在某些情况下会有所帮助。

2)如果你有充分的理由在一个解决方案中拥有它,你可以通过右键单击Web服务并转到Debug - >来启动单独的调试会话。开始新实例。然后,您可以对Web应用程序项目执行相同的操作。现在两者都将在单个Visual Studio解决方案中运行和调试。

但是,如果两者都在IIS中运行,则在尝试将两个调试会话附加到IIS时会发生冲突。尝试在本地开发服务器中运行其中一个(或两个)。如果需要保留服务引用,可以修复开发服务器的IP#。