Это не совсем просто сделать с Visual Studio .NET, но это можно сделать. На базовом уровне вам нужно сделать следующее:
Создайте файл TLB, например, "YourLibrary.tlb".
Создайте файл сценария ресурса Win32 с именем, например, «YourLibrary.rc», используя текстовый редактор (например, «Блокнот» или «Файл / Новый / Файл ... / Текстовый файл в Visual Studio»).
В файле сценария введите следующий текст (дословно (но, конечно, замените ваше фактическое имя файла TLB):
1 typelib "YourLibrary.tlb"
Сохраните файл сценария в той же папке, что и файл TLB.
Из командной строки Visual Studio перейдите в папку с файлом сценария и скомпилируйте его с помощью следующей команды:
rc YourLibrary.rc
При этом будет создан файл ресурсов Win32 в той же папке, которая называется «YourLibrary.res».
В Visual Studio щелкните правой кнопкой мыши узел проекта (например, «YourLibrary») в обозревателе решений и выберите Свойства.
На вкладке «Приложение» в разделе «Ресурсы» выберите параметр «Файл ресурсов» и перейдите к файлу «YourLibrary.res», начиная с шага 5.
Сохраните и перестройте проект.
TLB теперь будет встроен в качестве ресурса в DLL, так что другие приложения COM могут читать его.
Если вы позже сгенерируете файл TLB, вам потребуется повторить шаг 5, чтобы перекомпилировать файл ресурсов, и шаг 8, чтобы встроить новую версию в DLL.
Все это говорит о том, что вы можете автоматизировать некоторые из них с помощью событий сборки или путем помещения пользовательских целей MSBuild в файл проекта, но это совсем другое обсуждение.