Выставить dll для COM Interop

Я думал, что знаю, как это сделать, но, очевидно, не так, я был бы признателен за некоторую помощь! Я не могу зарегистрировать свою dll, чтобы создать ее экземпляр в VBS или в другом месте.

Я написал следующий пример класса, проверил «Сделать сборку видимой COM», проверил «Зарегистрироваться для взаимодействия COM», а затем собрал ее. Когда я пытаюсь создать экземпляр из VBS, я получаю, что «компонент Activex не может» создать объект ». ошибка.

Это код класса:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Smurf
{
    public class Pants
    {
        public string Explode(bool Loud)
        {
            string result;
            if (Loud)
                result = "BANG";
            else
                result = "pop";
            return result;
        }
    }
}

... и это VBS:

Dim a

Set a = CreateObject("Smurf.Pants")

msgbox("ok")

Что еще мне нужно сделать?

Спасибо :)

[редактировать]

Забыл упомянуть, после первой неудачи я попробовал REGSVR32 и REGASM - не поможет!

[/редактировать]

Обратите внимание, что когда я пытаюсь использовать REGSVR32, я получаю следующее сообщение:

The Module "C:...\Smurf.dll" was loaded but the entry-point DllRegisterServer was not found. Make sure that "C:...\Smurf.dll" is a valid DLL or OCX file and then try again.

Насколько это полезно?

Это последняя версия кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Smurf
{
    [Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
    public interface IPants
    {
        [DispId(1)]
        string Explode(bool Loud);
    }

    [Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"),
        InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IPantsEvents
    {
        string Explode(bool Loud);
    }

    [ComVisible(true)]
    [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
        ClassInterface(ClassInterfaceType.None),
        ComSourceInterfaces(typeof(IPantsEvents))]
    public class Pants : IPants
    {
        public Pants() { }

        [ComVisible(true)]
        [ComRegisterFunction()]
        public static void DllRegisterServer(string key) { }
        [ComVisible(true)]
        [ComUnregisterFunction()]
        public static void DllUnregisterServer(string key) { }

        [ComVisible(true)]
        public string Explode(bool Loud)
        {
            string result;
            if (Loud)
                result = "BANG";
            else
                result = "pop";
            return result;
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос