title: Why can't I browse dll to figure what's in it?: "Some components could not be browsed"
body: <p>I'm looking for a missing COM interface <code>X</code> which I suspect is defined in <code>Y.dll</code>. I can peek at this presumptive interface using </p>
  
  <pre><code>grep X Y.dll
  </code></pre>
  
  <p>which says "matches". Hurrah, suspicion confirmed! </p>
  
  <p>Alas, when I use the Object Browser in Visual Studio Express, trying to add <code>Y.dll</code> to my Custom Component Set, I get the error: "Some components could not be browsed" in a pop-up window.</p>
  
  <p>So what are the reasons I can't browse this dll? Can the COM interfaces deliberately or accidentally be protected, hidden, secured, or obscured? Obviously I need a primer! </p>
  
  <p>Officially, all Microsoft knows about this seems to be generally devoid of insight: </p>
  
  <blockquote>
    <p>This error generally occurs when you attempt to add a file type that does not support object browsing, such as .htm 
    and .txt files, in the Component Selector dialog box. The Object Browser supports file types such as .bsc, .olb, 
    .tlb, .dll, .exe, and .ocx.</p>
  </blockquote>
  
  <p>Seriously, what are the reasons for a dll or exe to not support object browsing? Any pointers to tutorials or books would be appreciated by this beginner! Thanks.</p>