将您的 ASP.NET 和 Silverlight 项目添加到通用解决方案中,Visual Studio 调试器将在调试网站项目时自动附加到 Silverlight 应用程序。您不能将两个单独的 Visual Studio 实例附加到同一个 Internet Explorer 实例,因此您必须将两者都添加到同一个解决方案并从那里进行调试。
您可以将 Silverlight 项目添加到您现有的 ASP.NET 解决方案(右键单击解决方案,添加 -> 现有项目)或创建一个新的解决方案,以便同时调试两者(创建一个新的空白解决方案并添加现有项目,与以前相同)。
这是之后逐步配置所有内容的过程。您可以在此处将此源文件下载到测试解决方案:
http://www.singulink.com/ClientFiles/StackOverflow/CrossProjectTest.zip
项目如下:
- CrossProjectTest - Silverlight 4 项目
- CrossProjectTest.Web - 在 Index.html 中托管 Silverlight 应用程序的 ASP.NET 项目
- IFrameWebApp -
<iframe>
指向另一个 ASP.NET 项目中的 Index.html 的 ASP.NET 项目
1) 在托管 Silverlight 应用程序的 ASP.NET 项目中,更改设置以使其在调试时不打开页面并指定端口,以便您始终可以通过已知地址访问它(在这种情况下为http://localhost:18000
)。您不希望它打开页面,因为 IFrame ASP.NET 项目具有您要显示的实际页面。不过,我们仍然希望它能够将调试器挂接到 Web 服务器进程中,这就是第 3 步的用武之地。
src
2)将您在 IFrame 项目中的属性指向iframe
另一个 ASP.NET 项目中托管 silverlight 应用程序的页面的已知地址,如下所示:
<iframe width="100%" height="100%" src="http://localhost:18000/Index.html"></iframe>
3) 右键单击解决方案文件,然后选择属性。在“启动项目”下,您需要选择“多个启动项目”并将两个 ASP.NET 项目的启动操作设置为“启动”。
4) 确保在两个 ASP.NET 项目中都启用了 Silverlight 调试,尤其是针对此特定场景的 IFrame 项目:
5) 在您的 Silverlight 应用程序中设置断点,按 F5,一切都应该启动。因为您将两个 ASP.NET 项目都设置为启动,所以它将启动两个开发 Web 服务器,但只有一个 Internet 浏览器指向 IFrame 项目。我在 Silverlight 项目的 App Startup 中添加了一个断点,只是为了证明它受到了影响:
6) 按 F5 继续执行,Silverlight 应显示在 IFrame 中,如下所示:
7) 愉快地在三个项目中的任何一个中放置断点,Visual Studio 将调试它们!