Некоторые специальные правила применяются к COM-серверу, как ваш.CLR в .NET 4 поддерживает параллельное управление версиями для CLR, что позволяет процессу размещать более одной версии CLR.Это особенно важно для COM-серверов: оно решает проблему внедрения версии CLR, которая ранее делала невозможным надежное создание расширений управляемой оболочки.Версия 2 CLR и более ранние поддерживали только одну версию CLR в процессе.С побочным эффектом того, что какой-либо COM-сервер загружал CLR первым, это сделало бы невозможной загрузку COM-серверов позже, для которых требуется более поздняя версия CLR.Особенно плохо, если этот первый COM-сервер загрузил версию CLR 1.0 или 1.1.
Если вы не хотите ориентироваться на .NET 4, вам придется попросить пользователей установить .NET 3.5 SP1, чтобыСервер может быть зарегистрирован.Вы также должны предоставить файл app.exe.config для клиентской программы, чтобы сообщить CLR, что вы знаете, что ваш COM-сервер был создан для более ранней версии CLR и что можно запустить его с CLR версии 4,Что предотвращает использование версии 2 CLR.Файл .config должен выглядеть следующим образом:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Очевидно, что вы будете ориентированы на .NET 4 для пользователей, у которых только 4. И имейте в виду, что вы на самом деле можете предпочесть получить версию 2CLR загружается, если клиентская программа полностью нативная, это, вероятно, та версия, с которой вы тестировали свой код.Версия 4 очень совместима, но в ней есть ряд исправлений ошибок, от которых ваш код может непреднамеренно зависеть.