Можете ли вы смешать .NET Framework версии в решении? - PullRequest
42 голосов
/ 12 марта 2010

Наша кодовая база, где я работаю, - это .NET 2.0. Для наших новых сборок / библиотек DLL / веб-приложений я бы хотел воспользоваться преимуществами 3.5.

Можно ли смешивать платформы .NET (для каждой сборки) в решении? Есть ли какие-либо предостережения, связанные с IIS?

Я хотел бы услышать любую положительную / отрицательную / обратную связь. Дайте мне знать!

Спасибо!

Ответы [ 7 ]

19 голосов
/ 12 марта 2010

Да, вы можете сделать это в Visual Studio, и это называется Multi-Targeting .

У Скотта Гатри есть отличная запись в блоге о Поддержка многоцелевого таргетинга в Visual Studio .

VS 2008 был первым выпуском Visual Studio, которая включала поддержка многоцелевого таргетинга для .NET. Это означало, что вы могли использовать VS 2008 создавать и редактировать не только Проекты .NET 3.5, но также .NET 3.0 и проекты .NET 2.0. это позволил разработчикам быстрее обновить и воспользоваться новым Инструменты Visual Studio - без необходимости обязательно более новая версия .NET будет установлен на клиентах и производственные серверы работают приложения.

Приветствия

6 голосов
/ 21 мая 2012

Вы можете использовать 2.0, 3.0 и 3.5 вместе в соответствии с: http://msdn.microsoft.com/en-us/library/bb383796(v=vs.90).aspx

4 голосов
/ 12 марта 2010

РЕДАКТИРОВАТЬ: я был неправ, вы можете. Вы можете перейти к ссылке 3. + сборки в 2.0, потому что CLR то же самое. Это не будет иметь место при переходе с 2.0 / 3. + на 4.0, поскольку есть новая версия CLR.

http://abdullin.com/how-to-use-net-35-syntax-and-compiler-features-for-net-20/

3 голосов
/ 12 марта 2010

Если вы можете дождаться новой платформы .NET 4.0, вы сможете запускать библиотеки DLL для каждой версии бок о бок в одном и том же процессе.

2 голосов
/ 12 марта 2010

У вас не может быть сборок .Net 1.1, работающих в том же процессе, что и сборка .Net 2.0+ - попытка сделать это приведет к ошибке.

Что касается IIS, это означает, что вы не можете иметь сайты / виртуальные каталоги .Net 1.1, работающие в том же пуле приложений, что и сайты .Net 2.0 и выше, - вам нужно создать отдельный пул приложений, чтобы сохранить код .Net 1.1 работает в другом процессе. (Это может быть сделано только в IIS 6.0 и выше, т.е. не в Windows XP)

Однако, как говорит nobugz - от .Net 2.0 до .Net 3.5 все используют один и тот же CLR, и поэтому разные версии кода .Net можно без проблем смешивать в одной сборке - это также относится и к IIS (.Net 2.0 и код .Net 3.5 может успешно сосуществовать в одном пуле приложений)

2 голосов
/ 12 марта 2010

Как примечание, у нас есть несколько старых библиотек 1.0, которые мы использовали в 2.0 и до сих пор используем в 3.5, без перекомпиляции. Так что там есть обратная совместимость.

2 голосов
/ 12 марта 2010

Это не должно быть проблемой. .NET 2.0 RTM через .NET 3.5 SP2 все используют одну и ту же версию CLR. Они отличаются только количеством включенных сборок. Формат сборки такой же. Конечно, если вы используете сборку, которая включена только в .NET 3.5, вы должны убедиться, что 3.5 действительно установлен на целевой машине. Вы быстро узнаете, если это не так.

3.5 уже должен быть на компьютере, если на нем включен Центр обновления Windows. Если нет, то для этого потребуется около дюжины минут.

...