title: Why does C# needs to register COM DLL in order to reference it?
body: <p>To use COM <code>.dll</code> in C++, all I need in compile time is to <code>#import</code> the TLB (or DLL which extracts the TLB), and I'm ready to go. Why does C# require the DLL to be registered (reg-free COM is the same as registered) to compile? Why does the TLB not enough?</p>
  <p>Notice my question regards the compilation of the <code>.dll</code> using the COM object. I understand why the object must be registered during runtime.</p>