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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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