У меня возник вопрос о стратегии развертывания в приложении .NET. В моем приложении я использую DSO (объекты поддержки принятия решений). Это COM-DLL-файл, который используется для доступа к серверу служб Analysis Services (версия 2000).Стратегия развертывания приложения .NET, использующая объекты COM
Я ссылался на COM из решения, а Visual Studio (на самом деле инструмент позади) хорошо создал сборку .NET, которая обертывает доступ к COM-объектам и делает ее классы доступными в .NET.
Обертка использует CLSID для сопоставления классов COM DSO с генерируемыми объектами .NET с использованием реестра Windows (при запуске установщика DSO там хранятся CLSID всех открытых COM-классов).
Проблема заключается в том, что когда Microsft выпускает новую версию DSO, и когда я устанавливаю эту новую версию, некоторые, не все CLSID-файлы меняются в реестре, поэтому отображение сгенерированных сборок .NET-сборки и приложение аварийно завершает работу.
DSO перераспределяется как часть целого пакета с именем Комплект обратной совместимости. Когда что-то меняется в этом пакете, которое не обязательно связано с DSO, некоторые из классов COM получают новые CLSID. Это расстраивает, потому что мое приложение перестает работать, даже если ничего не меняется в отношении DSO с новым пакетом. Они выпускают этот пакет довольно часто, самый новый - с установкой SQL Server 2008. Я думаю, и, вероятно, обновляется в каждом пакете обновления.
Как я могу справиться с развертыванием в этом сценарии? Нужно ли мне действительно создавать пакеты развертывания для моего приложения для каждой новой версии DSO?
Эта связь, кажется (эффективно) сломана («* FATAL ERROR:. Подключение к серверу базы данных не удалось *»). –