0

问题(来自 nuget PowerShell):

  • 启动 IIS Express(网站在文件夹中)[完成]
  • 启动 IE9 到 URL [完成]
  • 将当前 VisualStudio 实例附加到 IIS 以调试 .net 代码 [完成]
  • 将当前 VisualStudio 实例附加到 IE9 以调试 Javascript 代码 [问题]

地位:

目前,我可以从 powershell(使用 $DTE 对象)将 VS 附加到 IIS 和 IE9 选项卡进程。但是我无法调试 javascript 代码(我认为 VS 默认只调试 .net 代码而不是脚本)。

我看到了 EnvDTE80.Transport,但我不知道如何在 nuget PowerShell 中使用它。你有调试js的想法吗?还是完全不同的解决问题的方法?

更新(8 月 8 日): 我可以附加到 IE9 调试 js 但我发现我的问题完全不同:

  • 我用 powershell 运行 IIS Express
  • 我用 powershell 运行 IE9
  • 我可以得到“进程”对象

但是我过早地将调试器附加到进程并且调试不起作用。

  • 我尝试(即)启动 IIS Express,启动 IE9,首先连接到 IIS,然后连接到 IE9。现在我可以调试脚本但不能调试 IIS Express。
  • 在将 DTE 附加到进程之前,我尝试停止脚本 5 秒(Start-Sleep -s 5),现在我可以调试 IE js 和 IIS。但我不喜欢睡眠解决方案(多少秒?)。
4

2 回答 2

1

我没有通过 VS 对象模型而是通过 GUI 完成此操作,当您附加到 IE9 等正在运行的进程时,您可以选择所需的调试器类型。在这种情况下,您需要“脚本”调试器。如果这可以通过 GUI 完成,那么我怀疑它可以通过对象模型完成。VS 中的宏记录器非常适合解决此类问题。我在执行通过 GUI 附加的步骤时打开了它并得到了这个:

Sub TemporaryMacro()
    Try
        Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
        Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
        Dim dbgeng(1) As EnvDTE80.Engine
        dbgeng(0) = trans.Engines.Item("Script")
        Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, "HILLR1").Item("iexplore.exe")
        proc2.Attach2(dbgeng)
    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try

End Sub
于 2012-07-27T17:16:35.380 回答
0

我使用 firebug 在 Firefox 中调试 Javascript。Chrome 有它的等价物。从未在 IE 中尝试过,但我认为 IE 有一个 Firebug 版本。

检查这个问题:Internet Explorer 的 Firebug 等效项

于 2012-07-27T17:20:59.293 回答