COM-Interop: изменение версии .NET Framework с 2.0 на 4.0. Стоит ли менять также направляющие? - PullRequest
4 голосов
/ 19 октября 2010

Мне нравится переносить COM-класс с 2.0 на 4.0. Вы бы порекомендовали также создавать новые руководства для классов и другой ProgId?

Старый класс больше не будет использоваться. Я знаю, что должен перерегистрировать класс для нового пути mscorlib.

MS-Access создает экземпляр моего класса COM-сервера с помощью CreateObject, а мой COM-объект загружает некоторые другие классы с помощью DI (dot.net 2.0 и в будущем 4.0)

Ответы [ 3 ]

7 голосов
/ 19 октября 2010

Вы должны использовать новые GUID только при изменении определения интерфейса. Если вы сохраните их прежними, ваш новый COM-сервер заменит существующего. И клиентский код, который его использует, не нужно перекомпилировать. Когда вы делаете их изменения, они могут жить бок о бок, но клиентский код должен быть явно перекомпилирован для использования нового.

Обратите внимание, что поддержка параллельной версии CLR в .NET 4.0 актуальна здесь. Ваш COM-сервер можно использовать в программе, которая связывает CLR .NET 4.0, даже если COM-сервер все еще связывает CLR 2.0. Технически вам не нужно его обновлять.

1 голос
/ 19 октября 2010

Я не понимаю, почему вы изменили бы Guid или progid. Это означает, что вам придется перекомпилировать все, на что ссылается.

Пока вы придерживаетесь двоичной совместимости , не имеет значения, какую версию фреймворка составляет реализация вашего контракта, это просто детали реализации.

0 голосов
/ 19 октября 2010

Я перешел на DOT.net 4.0 и провёл несколько тестов.DOT.net 4.0 может использовать сборки 2.0, без проблем для моего сценария DI.

Единственное, что мне нужно сделать, это обновить мой установщик.Причина этого в том, что HKEY_CLASSES_ROOT \ CLSID {COMGuid} управляет версией, которую он должен использовать.

"RuntimeVersion" = "v4.0.30319"

...