Я полагаю, что могу скомпилировать C# DLL, а затем предоставить ее как COM-объект, чтобы его можно было CreateObject'd из VBscript. Я просто не уверен, что нужно сделать для этого ...





Вы должны использовать утилиту regasm для регистрации сборки (точно так же, как вы делаете regsvr32 с COM-серверами). Затем вы можете использовать его из COM. Убедитесь, что он установлен в GAC. Материал должен иметь [ComVisible(true)], чтобы его можно было использовать из COM.
Для каждого проекта, который вы можете выбрать, есть опция «Доступен через COM». Затем, конечно, вы должны зарегистрировать сборку, чтобы использовать ее, но это все.
Мне пришлось немного поохотиться, чтобы найти его для C# (я привык к VB.Net), но вы можете найти этот вариант, дважды щелкнув папку Properties в обозревателе решений, выбрав вкладку Application и затем щелкнув Кнопка Assembly Information....
Это может быть очень просто. Но есть много мест, где не все так просто. Это во многом зависит от того, что нужно вашему классу, и как вы собираетесь его развернуть.
Некоторые вопросы, которые следует учитывать:
regasm /codebase.regasm назначить их, но они будут разными каждый раз (и в каждом месте), когда класс регистрируется. Если вам нужно, чтобы идентификаторы GUID оставались неизменными при установке, вам необходимо пометить элементы с помощью атрибута Guid.MarshalAs.InterfaceType.Есть очень хорошая (если и устаревшая) статья о COM-взаимодействии и .Net здесь. (Многие вещи, о которых говорится в статье, например, создание библиотек типов, теперь обрабатываются автоматически.) Документация Microsoft обновлен, но не настолько подробен.