Это происходит потому, что для установки надстройки автоматизации требуется, чтобы в реестре была сделана настраиваемая запись "CLSID {GUID} \ Programmable", которая при создании надстройки автоматизации обычно обрабатывается с помощью методов, отмеченных ComRegisterFunctionAttribute и ComUnregisterFunctionAttribute в вашем классе. Затем эти классы регистрируются при запуске RegAsm в сборке.
Однако при использовании пакета установки Visual Studio атрибуты ComRegisterFunctionAttribute и ComUnregisterFunctionAttribute незаметно игнорируются. Это происходит из-за того, что установочный проект запускает RegAsm с использованием ключа / regfile, чтобы создать файл .reg, содержащий все необходимые ключи реестра. Именно этот файл .reg затем используется при запуске пакета .msi на клиентском сайте. Проблема заключается в том, что когда RegAsm запускается через ключ / regfile, результирующий файл .reg не содержит никаких обновлений реестра, сделанных пользовательскими функциями реестра (например, помеченными с помощью ComRegisterFunctionAttribute и ComUnregisterFunctionAttribute).
В результате ваша пользовательская запись реестра "CLSID {GUID} \ Programmable" не создается, и, следовательно, ваша надстройка автоматизации не отображается в списке надстроек автоматизации.
Чтобы исправить эту ситуацию, вы должны создать свою собственную, настраиваемую запись "CLSID {GUID} \ Programmable" другим способом. Проще всего это сделать, воспользовавшись разделом Редактор реестра пакета установки.
Правильная обработка всех шагов для пакета установки для надстройки автоматизации несколько сложна. К счастью, у меня есть пошаговое объяснение того, как это сделать (а также более подробное описание того, почему это происходит) в качестве ответа на вопрос: Как получить COM Server для Excel, написанный на VB .NET установлен и зарегистрирован в списке серверов автоматизации .
Надеюсь, это поможет!
Mike