使用IMarkupServices解析HTML的问题,是MS的一个BUG吗?
最近查阅到一些关于使用C#   IMarkupServices解析HTML的案例,都是同一篇文件,是使用Microsoft.mshtml这个COM组件解析:   
 1)建立ConsoleApplication工程,引用Microsoft.mshtml组件,修改项目Build属性,允许使用unsafe代码 
 2)定义IPersistStreamInit接口   
 using   System; 
 using   System.Runtime.InteropServices;   
 namespace   mshtml 
 { 
    [ComVisible(true),   ComImport(),   Guid( "7FD52380-4E07-101B-AE2D-08002B2EC713 "),   InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public   interface   IPersistStreamInit 
    { 
       void   GetClassID([In,   Out]   ref   Guid   pClassID); 
       [return:   MarshalAs(UnmanagedType.I4)][PreserveSig] 
       int   IsDirty(); 
       void   Load([In,   MarshalAs(UnmanagedType.Interface)]   UCOMIStream   pstm); 
       void   Save([In,   MarshalAs(UnmanagedType.Interface)]   UCOMIStream   pstm, 
       [In,   MarshalAs(UnmanagedType.I4)]   int   fClearDirty); 
       void   GetSizeMax([Out,   MarshalAs(UnmanagedType.LPArray)]   long   pcbSize); 
       void   InitNew(); 
    } 
 }   
 3)编写主体代码   
 using   System; 
 using   System.Runtime.InteropServices; 
 using   mshtml;   
 namespace   ctest2 
 { 
    class   Class1 
    { 
       [STAThread] 
       static   void   Main(string[]   args) 
       { 
          IHTMLDocument2   doc   =   Parse( " <B> TEST </B>  "); 
          //使用doc解析 
       }   
       public   static   unsafe   IHTMLDocument2      Parse(string   s) 
       { 
          IHTMLDocument2   pDocument=new   HTMLDocumentClass();          
          if(pDocument!=null) 
          { 
             IPersistStreamInit   pPersist=pDocument   as   IPersistStreamInit   ; 
             pPersist.InitNew(); 
             IMarkupServices   ms=pDocument   as   IMarkupServices; 
             if(ms   !=   null) 
             { 
                //省略这部份内容,需要的用户请上网查找 
             }             
          } 
       } 
       return   pDocument; 
 }   
 问题在这里,同一代码在同一计算机上,在VS2003中编译后运行,语句IMarkupServices   ms=pDocument   as   IMarkupServices返回的ms中正确的, 
 而且VS2005+SP1中编译后运行,返回的是null值,也就是说没有实现这个接口。   
 这是怎么回事?google了一下,有几个人也和我有一样的问题(有个人怀疑是线程模式的问题,我认为不对,我的这两个都是Console,模式应该是一样的),但是没有答案,晕死。
------解决方案--------------------用C++来写吧
------解决方案--------------------不才. 那篇文章是我写的. 发现了很多IMarkupServices的Bug, 所以自己写了一个HTML DOM Parser了