Кто-нибудь успешно использует без регистрации COM с компонентами .NET?

StackOverflow https://stackoverflow.com/questions/617253

Вопрос

До недавнего времени мы с радостью использовали свободный от регистрации COM для наши нативные и .NET COM компоненты. Однако мы столкнулись со странной проблемой, когда наше приложение начало случайным образом зависать на Windows XP SP3 (но не на Vista) после того, как мы изменили только номер версии сборки .NET, чтобы перейти от кандидата на выпуск к выпуску. (Разве ты не ненавидишь закон Мерфи?)

После многих потерянных человеко-дней и заточки зубов мы обнаружили, что проблема заключалась в известной ошибке в sxs .dll , которая вызывает повреждение кучи при получении информации о классе .NET. Существует исправление, которое устраняет проблему, но исправления не предназначены для повторного распространения.

Мы немного озадачены тем, что в реализации COM без регистрации есть такая ужасная ошибка. Кто-нибудь успешно использует COM без компонентов для регистрации .NET? Как вы решили эту проблему?

Это было полезно?

Решение

Эта проблема связана с тем, как SxS вычисляет размер информации о классе. Номер версии сборки является частью этой информации.

Поскольку он работал с номером версии кандидата на выпуск, возможно, для вас существует обходной путь - сделать номер версии выпуска такой же длины, как и версия RC.

Если это не работает для вас, существует установленный процесс запроса прав на распространение исправлений. Я бы обратился в службу поддержки Microsoft, чтобы продолжить этот путь.

Другие советы

Мы используем COM без регистрации как для собственных компонентов, так и для компонентов .NET. Мы решили использовать фиксированный номер версии сборки для этих компонентов (в основном, чтобы не загромождать реестр при многократной регенерации компонентов .NET с динамическим номером сборки / *). Не идеально, но у нас есть другие способы определить, какая версия данного компонента используется (они никогда не исправляются по отдельности).

Звучит очень неприятно! Из этой статьи базы знаний кажется, что использование SxS необязательно ... Насколько я знаю, это единственный способ сделать reg-free COM?

К вашему сведению, исправление теперь можно загрузить напрямую: http: // www.microsoft.com/en-us/download/details.aspx?id=27680

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top