Смешивание .Net 2.0 с .Net 4.0 на сайте ASP.NET - PullRequest
4 голосов
/ 16 марта 2012

Вот мой сценарий:

В настоящее время я обновляю веб-сайт, который я поддерживаю, с .Net Framework 3.5 до 4.0.Во всех моих сборках с моим кодом я изменил целевую среду, они отлично скомпилированы и сайт работает.

Вот моя проблема / вопрос.Я использую Crystal Reports 2010, предоставленный SAP.Их библиотека называется «Crystal Reports для .Net Framework 4.0», но на самом деле эта библиотека нацелена на среду выполнения 2.0 (и что еще более огорчает меня, так это то, что клиентские элементы управления имеют 1.1 зависимости ... серьезно).

Я буду запускать 3.5 (2.0 CLR) и 4.0 (CLR) вместе, потому что у меня должны быть Crystal Reports, но я хочу понять эти проблемы:

  1. Какое влияние на производительность оказывает, включая сборку 2.0,на сайте ASP.NET 4.0 (стоит ли загружать его дополнительными издержками)?
  2. Полностью ли я что-то пропустил, и существуют ли фактические сборки CR2010 4.0, предназначенные для 4.0?
  3. Если бы я изолировал свой класс-оболочку от основной библиотеки бизнес-логики, 2.0 был бы загружен / использован толькокогда он вызывался тогда (или сайт загружал бы сборку, когда сайт загружался в память, вызывая их загрузку в любом случае)?Отчасти это мое незнание того, как разные CLR загружаются / взаимодействуют друг с другом.

1 Ответ

1 голос
/ 28 марта 2012

Начиная с .net 4 и выпуска DLR, .net устанавливает несколько версий для параллельного запуска. Когда v4 получает сборку pre v4, он делегирует выполнение в среду pre v4 (все платформы pre v4 полностью обратно совместимы)

  1. Я предполагаю, что производительность будет падать, однако это должно быть достаточно тривиально, чтобы ее игнорировать.
  2. Понятия не имею:)
  3. Компоненты платформы в основном загружаются по требованию, и они будут загружаться только по мере необходимости (некоторые при загрузке сборки, в большей степени, когда JIT компилирует разные сегменты кода). Короче говоря, большая часть кода v2 будет загружена, скомпилирована (в нативный) и выполнена только тогда, когда она вызывается в вашем коде.
...