Ошибка при установке сборки в COM+
Я использую Managed C++, то есть доступ к возможностям.Net Framework из моего кода C++. Проблемный код, о котором идет речь, вызывается из dll с настраиваемым действием и является частью одного из наших пакетов.msp.
Сценарий: мы используем RegistrationHelper::InstallAssembly Method (String, String%, String%, InstallationFlags)
отSystem.EnterpriseServices
пространство имен для установки сборки в COM+. Приведенный выше фрагмент кода устанавливает сборку в COM +, используя файл библиотеки типов на диске.
Этот кусок кода запускается из системного контекста. Мы наблюдаем сбои описанным выше способом на 20% серверов. Сбой кода со следующим исключением:
System.EnterpriseServices.RegistrationException: Не удалось установить библиотеку типов "[путь к файлу.tlb]" в приложение "[имя приложения]".в System.EnterpriseServices.RegistrationDriver.InstallAssembly(RegistrationConfig regConfig, Object obSync) в System.EnterpriseServices.RegistrationHelper.InstallAssemblyFromConfig(RegistrationConfig& regConfig) в System.EnterpriseServices.) в System.EnterpriseServices.RegistrationHelper.InstallAssembly(сборка строк, строка и приложение, String& tlb, InstallationFlags installFlags) в ComPlusRegistrationWrapper.CtxRegsvcs.RegisterComPlus(сборка строк, строка ApplicationName, строка TLB)
Вышеупомянутое исключение было зафиксировано путем использования ToString()
метод класса System.Exception.
Обратите внимание, что в приведенном выше исключении: [путь к файлу.tlb] - путь к файлу библиотеки типов на диске [имя приложения] - имя приложения COM+.
Код выполняется в Windows 2008 R2. Отражатель подтверждает, что данная сборка скомпилирована для.Net FW 2.0
Я затрудняюсь понять, почему это происходит только на подмножестве серверов.
Чтобы собрать больше данных, вот о чем я подумал:
- Попросить клиента запустить ctxregsvcs.exe, чтобы вручную установить сборку в COM + и посмотреть, удастся ли это.
У кого-нибудь есть указания относительно того, как это можно отлаживать дальше?