Что нового для WCF в Visual Studio 2008 - Перекрестное нацеливание в .NET Framework

ОГЛАВЛЕНИЕ

Перекрестное нацеливание в .NET Framework

В предыдущих выпусках Visual Studio можно было создавать программы, нацеленные только на ту версию платформы .NET Framework, вместе с которой система Visual Studio и поставлялась. К примеру, в Visual Studio 2005 можно было создавать сборки только для .NET Framework 2.0. В действительности же разработчики сталкиваются с несколько иными задачами: им зачастую приходится поддерживать старые версии приложений, созданные в предыдущих версиях платформы .NET, а в то же время при обновлении приложений они уже работают с новой версией Visual Studio.

Кроме того, такое однозначное нацеливание не позволяло разработчикам, обеспечивающим поддержку приложений, созданных в старых версиях платформы .NET Framework, пользоваться преимуществами новых версий, например возможностью переработки кода, реализованной в Visual Studio 2005.

Проблема, строго говоря, состояла в отсутствии возможности перекресного нацеливания при выборе версий .NET Framework. Разработчику приходилось либо устанавливать несколько версий Visual Studio одновременно, либо компенсировать отсутствие этой возможности раздельным тестированием и развертыванием сборок. В Visual Studio 2008 была реализована адекватная (хотя и несовершенная) поддержка нескольких версий .NET Framework. Поскольку .NET Framework 3.0 и .NET Framework 3.5 фактически используют ту же версию среды CLR, что и .NET Framework 2.0, и различие состоит только в связанных сборках, Visual Studio по-прежнему позволяет разрабатывать приложения для текущей версии исполняющей среды и при этом обеспечивает поддержку .NET Framework версий 2.0, 3.0 и 3.5 (обратите внимание: номера серий .NET Framework соответствуют номерам выпусков, а не версиям исполняющей среды; исполняющая среда остается прежней — CLR 2.0).

В Visual Studio 2008 в панели приложений (в свойствах проекта) появилось новое поле со списком под названием Target Framework, в котором можно выбрать требуемую версию .NET Framework: 2.0, 3.0 или 3.5 (см. рис. 1).

 

Рис. 1 Свойство целевой версии платформы в Visual Studio 2008

Это значение используется только во время разработки; во время выполнения оно не играет никакой роли, поскольку версия среды (.NET 2.0 CLR) не изменилась. Значение, которые вы выберете, должно соответствовать самой старой версии платформы .NET Framework, на основании которой будет создаваться сборка. Для новых проектов по умолчанию задается версия .NET Framework 3.5. При добавлении ссылок возникают дополнительные сложности: если вы выбираете более старую версию в панели приложений, а ссылки создаете для сборки, созданной в более новой версии платформы, то Visual Studio 2008 выдает предупреждение, ссылка помечается как недействительная, и сборка не создается. Visual Studio 2008 не позволяет добавлять ссылки на сборки .NET Framework, требующие более высокой версии платформы, нежели та, в которой создается проект. Если вы добавите ссылку на проект, требующий более высокой версии платформы, Visual Studio 2008 сообщит вам о том, что возможен конфликт версий. Если же вы добавите ссылку путем непосредственного перехода к сборке, Visual Studio 2008 вас не станет останавливать.

Что касается влияния языков на возможность перекрестного нацеливания, обратите внимание на то, что в C# (в отличие от Visual Basic) вы можете ограничить использование, например, анонимных типов и методов расширения в проекте, создаваемом в .NET Framework 2.0 или 3.0, указав версию компилятора. Для этого нужно в панели Build (Сборка) нажать кнопку Advanced (Дополнительно) и выбрать версию языка ISO-2 (C# 2.0) вместо той, которая установлена по умолчанию (пока единой для всех стандартной версии нет).

Когда вы открываете проект Visual Studio 2005 WCF в Visual Studio 2008, версия платформы (2.0) сохраняется. Хотя с проектом можно работать и так (поскольку версия исполняющей среды не изменилась), я рекомендую вручную выбрать версию 3.0 или 3.5 — в зависимости от имеющихся требований.

Версия требуемой среды .NET Framework больше всего отражается на возможности использовать новые шаблоны проектов. Проекты рабочих процессов и распределений WCF должны создаваться для .NET Framework 3.5, проекты библиотеки служб — для .NET Framework 3.0 или 3.5. Функция добавления ссылки на службу (ее мы рассмотрим далее) доступна, только если для проекта выбрана версия платформы 3.0 или 3.5.