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

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

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

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

3 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам