代码之家  ›  专栏  ›  技术社区  ›  opsb

如何在visual studio/internet explorer中调试C#BHO项目

  •  5
  • opsb  · 技术社区  · 15 年前

    我正在使用visual studio 2010在C中创建一个IE扩展。如何在Internet Explorer中运行扩展时调试它?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    12 年前

    项目+属性,调试选项卡。选择“启动外部程序”,将其设置为c:\program files\internet explorer\iexplore.exe。您可能希望将“命令行参数”设置为一个HTML文件的路径,该文件将执行您的BHO。

    在要调试的代码上设置断点。按F5时,Internet Explorer将开始运行。您将看到断点变为空心,表示断点未启用。一旦IE加载DLL,在输出窗口中可见,它就会变成一个红色。当IE调用你的代码时,调试器会自动中断。

    有一个注册步骤。一定要避免使用gacutil.exe,它只会污染您机器上的GAC。始终支持IDE中的“Register for COM interop”选项,相当于使用/codebase选项运行Regasm.exe。不需要GAC那样做。不管怎样,要更改这些机器配置,必须提升VS的运行权限,右键单击快捷方式并选择“以管理员身份运行”来启动它。

        2
  •  20
  •   Community Mohan Dere    9 年前

    1. 这个问题被问了很多
    2. 大多数答案,如果不是全部的话,都是不完整或不正确的

    这里是:在VS2010中。执行以下操作:

    1. 创建您的BHO项目,一个好的起点是: Demo IE Toolbar/BHO
    2. 创建类似的解决方案/项目,转到“解决方案资源管理器”,右键单击项目或使用Alt+Enter并转到“属性”:

    Project properties

    Debug Profile

    1. 我们需要一些生成后事件来注册程序集:

    Defining post build events

    以下是不同的命令:

    "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /u "$(TargetName)"
    "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /f /i "$(TargetPath)"
    "C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /unregister /codebase "$(TargetPath)"
    "C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase "$(TargetPath)"
    

    顺序很重要。首先,程序集被注销,然后注册。第一次运行时,生成将失败,因为这些生成后事件将失败。这是正常的,第一次生成时,没有注册程序集,因此没有要注销的内容。第二次建造的时候,一切都会好起来的。在这个阶段,在一个成功的、无错误的构建之后,手动启动IE应该会导致您的BHO可见:

    Check BHO registered

    Check BHO registered II

    1. 现在我们也希望能够 F5

    Start IE external

    这样做会启动IE,你的BHO也应该运行,但断点不会被击中。

    为了解决这个问题,我们将使用:

    public virtual void SetSite(Object pUnkSite)
        {
    
    #if DEBUG
            Debugger.Launch();
    #endif
    
            ... Other code ...
        }
    

    here .

    紧迫的 现在将出现几个对话框,询问要附加哪个调试器:

    Debug dialog I

    Debug dialog II

    Debug Dialog III

    Breakpoints can be hit!

    我希望这有帮助!

    我最近被要求给我写的一个相当古老的必和必拓带来一些更新。回顾我自己的教程,我注意到在遵循它时可能会出现一些问题:

    1) 在使用VS2010(已发布)快速部署W7计算机后,尝试附加调试器时出现了一个可怕的错误:

    Framweork version errors!

    我也可以通过安装VS2010 SP1(正如我最初使用的那样)来解决这个问题,尽管我不知道为什么会发生这种情况。

    2) 现在,当尝试附加调试器时,包含我的项目的VS2010实例不在可用调试器的列表中。

    Debugger not there!

    questions by others .

    编辑2

    第二个问题是在完全重新启动后解决的,就像 linked question