С регистрацией разобрался. Оказывается VS2005 уже все зделала сама. У меня ведь стоит галочка в настройках проекта "Register for COM interop" 

Теперь другая пролема, с подключением.
//Описываю интерфейс
namespace TestComLib
{
    [Guid("AD0DC746-F175-4b0b-B92B-03C2893498FC"),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
    interface ITestComponent
    {
        int Mul(int First, int Second);
        int Square { get; set; }
        String About { get; }
    }
    [ComImport, Guid("CBEB5433-002A-4fdf-AD04-E9BD9EEE604A")] 
    class TestComponent
    {
    }
..........
//Пытаюсь подключится
private void button3_Click(object sender, EventArgs e)
{
            TestComLib.TestComponent tc = new TestComLib.TestComponent(); //Ошибка
            TestComLib.ITestComponent ic = (TestComLib.ITestComponent)tc;
            label1.Text = ic.About;
}
Текст ошибки:
Unable to cast object of type 'TestComLib.TestComponent' to type 'TestComLib.TestComponent'.
т.е. несовпадение типов или пространства имен. Как тогда правельно?
Через позднее связывание таже ошибка:
string sAppProgID = "TestComLib.TestComponent";
            object oTestCom = null;
            try
            { oTestCom = Marshal.GetActiveObject(sAppProgID); }
            catch
            { oTestCom = Activator.CreateInstance(Type.GetTypeFromProgID(sAppProgID)); }
       .................
           //Этот метод проходит без проблем
            label1.Text = (string) oTestCom.GetType().InvokeMember("About",
                 BindingFlags.GetProperty, null, oTestCom, null); 
         ...................
            //такой способ не проходит, а как раз его то и хотелось бы реализовать
            TestComLib.TestComponent i = (TestComLib.TestComponent)oTestCom;
            TestComLib.ITestComponent mc = (TestComLib.ITestComponent)i;
            label1.Text = mc.About;