0

我有两种解决方案,一种是 asp.net,另一种是 silverlight 解决方案。它们都托管在我的本地服务器上。我需要的是同时调试两个解决方案,在 asp 解决方案中,我有一个带有类似代码的页面

<iframe src="http://localhost/UI_RegInc/UI_RegInc.aspx?UserId=<%=UserId%>"
    frameborder="0" height="620" scrolling="no" width="1000" marginheight="0" marginwidth="0">
</iframe>

在这里,我正在调用 UI_RegInc silverlight 应用程序,其中 UI_RegInc.aspx 页面正在调用我想要调试的 silverlight 应用程序。我尝试的是启动asp应用程序,然后在VS的另一个实例中我启动silverlight应用程序,它是UI_RegInc,在这个实例中试图将它附加到带有asp应用程序的iexplorer进程。但没有得到积极的结果。还尝试附加到 webdev 进程。繁琐的解释,但希望能理解。

4

2 回答 2

1

将您的 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 步的用武之地。

设置端口和启动动作

src2)将您在 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 将调试它们!

于 2012-10-19T11:07:38.320 回答
0

您必须在托管 Silverlighth 应用程序的 Web 项目上检查 Silverlight。

在此处输入图像描述

于 2012-10-19T11:13:50.413 回答