Как использовать компонент CLR 4.0 в приложении CLR 1.1 или 2.0? - PullRequest
4 голосов
/ 23 октября 2010

В то время как я видел некоторые дискуссии об использовании более старого компонента CLR 2.0 в более новом приложении CLR 4.0, как бы справиться с противоположным случаем?

Например, если в одном было унаследованное приложение.Net 2.0, и хотел воспользоваться преимуществами новой бизнес-логики, которая в полной мере использует версию CLR 4.0, как можно было бы ссылаться на новый компонент в унаследованном приложении и получать доступ к его методам?И будет ли работать тот же метод, если бы унаследованное приложение было в .Net 1.1?

(Приложение для ясности)

Хотя обновление является идеальным, все еще существуют крайние случаи, когда это может быть техническимили политическое ограничение.

Ответы [ 3 ]

3 голосов
/ 23 октября 2010

Как правило, вы должны обновить унаследованное приложение для использования .NET 4. Код должен не требовать изменений.

В противном случае основным поддерживаемым методом для обработки этого является COM-взаимодействие.,Ваш класс .NET 4 может быть помечен [ComVisible], и затем вы можете создавать сборки взаимодействия, чтобы «использовать» его в более старых версиях .NET.

Это, однако, имеет много недостатков, в том числе большую сложность.и снижение производительности.

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

Взгляните на Рик Байерс и Саймон Холл: CLR 4 - бок о бок в процессе - что.Как.Почему.

Проверьте этот комментарий:

Предполагается, что у вас есть уровень изоляции, который вы упомянули в видео, возможно ли загрузить наУправляло ли приложение clr2 средой исполнения SrS (и наоборот)?Если да, что я должен сделать?Это какой-то управляемый API-интерфейс, который мне нужно назвать?Или мне нужен слой Come или что-то, что затем загружает другой clr для меня?Есть ли у них какие-либо образцы бета-версии, на которые я могу взглянуть?


Загрузка CLR действительно происходит через нативные API, либо с использованием API-интерфейсов хостинга напрямую (например, ICLRMetaHost).) или косвенно через COM.Вы можете сделать это в управляемом коде (не нужно на самом деле писать какой-либо нативный код) с помощью средств взаимодействия .NET.Так что да, вы могли бы написать код, который работал в CLR v2, который загружал CLR v4 и наоборот.

Я знаю, что у нас есть примеры кода в работе, но я не думаю, что они были опубликованы.Следите за категорией SxS в блоге команды CLR.Самый простой способ - создать управляемый COM-компонент с использованием одной версии .NET, а затем создать его экземпляр с помощью COM-взаимодействия из другой версии .NET точно так же, как без SxS.Ищите любые примеры для сборки и использования COM-компонентов с .NET 2.0.

Надеюсь, это поможет, Рик

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

Вместо этого вы должны нацелить ваше старое приложение .Net 1.1 или 2.0 на .Net 4.0 - поскольку на целевом компьютере в любом случае потребуется установить .Net 4.0, чтобы использовать компонент .Net 4.0, нет никакого реального преимущества в нацеливании приложение на .Net 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...