title: warning MSB3391: <DLL> does not contain any types that can be unregistered for COM Interop
body: <p>I've made a simple C# DLL (that's part of a much larger project) using VS2005.  I need to use the DLL in Excel via VBA code so I am using COM Interop on the assembly.  I am <strong>trying to make the build process automatically generate the necessary TLB file</strong> so that I don't need to go to the command line and use regasm after every build.</p>
  
  <p>My problem is that although the DLL compiles and builds fine, it does not generate a TLB file.  Instead, the error in the title prints out in the output box.</p>
  
  <p>I've gotten other DLLs to build TLB files by going to the project's properties in VS2005 -> Build -> Output -> Check <em>"Register for COM interop"</em>.  Also I have <em>[assembly: ComVisible(true)] in the AssemblyInfo.cs</em>.</p>
  
  <p>Here's the summary of the source for the problem DLL and the DLL that it references for a return type:</p>
  
  <pre><code>using System;
  using System.IO;
  using System.Runtime.InteropServices;
  using SymbolTable;
  
  namespace ProblemLibrary
  {
      public class Foo
      {    
          public Foo(string filename)
          {
              ...
          }
  
          // method to read a text file into a SymbolTable
          public SymbolTable BuildDataSet(string[] selected)
          {
              ...
          }
      }
  }
  </code></pre>
  
  <p>Here is a summary of SymbolTable.dll.  It holds a return type that ProblemLibrary uses.</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  
  namespace SymbolTable
  {
      public class SymbolTable
      {
          readonly Dictionary&lt;SymbolInfoStub, string&gt; _symbols = new Dictionary&lt;SymbolInfoStub, string&gt;();
  
         /*methods that interact with Dictionary snipped*/
      }
  }
  </code></pre>