Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на Visual С++

  Все выпуски  

Программирование на Visual С++ No.108 Что нового в VS.NET Whidbey?


Информационный Канал Subscribe.Ru


  ПРОГРАММИРОВАНИЕ  НА  VISUAL  C++
Статьи по программированию под Windows и платформу .NET
РАССЫЛКА САЙТА
RSDN.RU

No. 108 / 2005-01-07
Подписчиков: 27198

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, АРХИВ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Что нового в VS.NET Whidbey?



Профайлы пользователей

Думаю, у многих после переинсталляции ОС, перехода на другую машину или просто в пылу борьбы за единообразие в своей фирме, появлялось желание перенести настройки, сделанные в одной копии VS, в другую. Я сам делал это еще во времена VS 6, копируя ключи реестра в .reg-файл и восстанавливая их на другой машине. Однако делать это было крайне неудобно, да и не все настройки можно перенести таким путем.

В новой версии VS появилась штатная возможность экспортировать и импортировать практически все настройки IDE. Теперь настройки хранятся в одном файле, путь к которому также настраиваемый, так что его можно даже разместить на сети (сам не пробовал, но вроде ничто не мешает).

В список сохраняемых настроек входят:

  • Конфигурация окон.
  • Конфигурация меню.
  • Клавиатурные сокращения.

Экспортировать профайл можно, выбрав "Import/Export Settings" в меню "Tools".


Task List

Улучшено окно "Task List". В нем теперь может отображаться многострочный текст, сортироваться колонки и т.п.


Текстовый редактор

В редакторе кода произошло несколько приятных изменений.

С левой стороны окна редактирования появилась полоска, отображающая состояние строк. Если изменить строку, то эта полоска окрашивается в желтый цвет. После записи изменений цвет полоски меняется на зеленый. Откровенно говоря, цвета те еще, но их можно настроить самостоятельно.

Существенно усовершенствована работа с закладками. Теперь переход по закладкам осуществляется не в пределах одного документа, а во всем решении (Solution). Причем если закрыть среду и открыть ее заново, то закладки не исчезают. Раньше такого поведения можно было добиться, установив Visual Assist (расширение для VS6 и VS.NET независимой фирмы Whole Tomato Software, Inc. - www.wholetomato.com). Однако Microsoft пошел дальше и добавил специальное плавающее окно "Bookmarks" (см. рисунок1) в котором можно увидеть все имеющиеся закладки. Закладки в этом окне можно менять местами, помещать в папки (здесь же и создаваемые), включать/отключать (причем все закладки, находящиеся в одной папке, можно включать/отключать одним кликом мыши), именовать (задавать осмысленные имена, по умолчанию закладки именуются по принципу BookmarkПорядковыйНомер). В общем, трудно придумать, что еще можно сделать с закладками. Разве что возможность сохранять набор закладок и автоматическ и отсылать другу по почте.

Рисунок 1. Окно "Bookmarks"

Единственная проблема с закладками заключается в том, что описанное выше окно серьезно глючит. Я не раз вылетал из VS при экспериментах с ним. Но для дремучей беты это в порядке вещей. Будем надеяться, что к релизу эта проблема исчезнет. Уж больно удобно все получилось.

Не знаю уж зачем, но теперь можно скопировать описание метода, показываемое при нажатии Ctrl+Shift+Space, в клипборд (опция Edit.CopyParametrTip, по умолчанию вызываемая клавиатурным сокращением Alt+C), или вставить в позицию курсора (опция Edit.PasteParametrTip, по умолчанию вызываемая клавиатурным сокращением Alt+I).

Если вы когда-нибудь использовали Microsoft Office XP, то должны были заметить значки smart-тегов, то и дело появляющиеся при редактировании. Думаю, замечали. Их тяжело не заметить. Вещь, довольно сильно раздражающая. В Word их еще можно скрыть по Esc. В Excel-е же они воистину бессмертны. Появляясь над текстом, они перекрывают его и не дают нормально работать. Так вот эта изумительная возможность появилась и VS. Радует только то, что причинять пользу они в основном будут VB.NET-программистам, так как именно VB.NET избран разработчиками VS в качестве номинанта на звание самого интеллектуально-редактируемого языка. Я же больше предпочитаю C# и C++, а в них smart-теги появляются не так часто.

Редактор текста теперь поддерживает автоматическую запись. Запись происходит каждые пять минут (значение настраивается). Если IDE накрывается, при следующем запуске включается механизм восстановления (что-то вроде того, что есть в Word).

Улучшено, причем очень значительно, автоматическое выравнивание кода. В VS и раньше были возможности вроде smart-отступов (smart indent) и форматирования выделенного фрагмента кода, но все ограничивалось банальным управлением отступами и заменой табуляций на пробелы (или наоборот, в зависимости от настроек). Теперь же редактор VS позволяет полностью переформатировать (по-своему) код. Например, если в вашей конторе появился новый программист, код которого не удовлетворяет принятым в фирме стандартам:

  

string Func1( int i, string str ) {
   if(i==0) return "aaa"; else return str;
   }

 

то нажатием сочетания клавиш можно отформатировать этот код, приведя в соответствие с корпоративными стандартами:

  

string Func1(int i, string str)
{
  if(i == 0)
    return "aaa";
  else
    return str;
}

 

Самое приятное, что все можно настроить по-своему. Это делается в соответствующей ветке диалога настроек (см. рисунок 2). Что особенно приятно, практически для всех настроек приводятся демонстрационные примеры, отображаемые в окне под списком настроек. Все настройки форматирования помещаются в профайл пользователя, так что их без труда можно распространить по всему предприятию.

Рисунок 2. Настройка форматирования кода.

Единственная загвоздка, возникающая с этой замечательной возможностью - не все работает гладко. Так, очень часто при переносе параметров метода VS не делает отступа (хотя об этом указано в настройках), и не очень интеллектуально меняются отступы между логическими блоками кода, но, в общем, все просто здорово.


Рефакторинг

VS обзавелась мощнейщим инструментом позволяющим производить сложную модификацию текста - рефакторингом. Ранее подобные возможности можно было встретить только в продуктах для Явы (вроде IDEA), или в дополнениях для VS, поставляемых независимыми поставщиками за отдельные деньги. Теперь они доступны всем пользователям VS. Пока что рефакторинг доступен только для языков C# и J#, но похоже, со временем он станет доступен и в VB.NET.

Лучшее определение тому, что же такое рефакторинг, дал Игорь Ткачев (IT): "Раньше переделка своего или чужого кода считалась плохим тоном, неумением писать правильный код с самого начала и т.п. Потом придумали умное слово "рефакторинг" и теперь это не только не зазорно, но даже почётно.". В общем, хотя и шутка, но очень точно отмечающая предпосылки этого явления.

Вот список поддерживамых VS возможностей:

  • Extract Method - средство, позволяющее легко выделить фрагмент кода в отдельный метод. При его запуске открывается диалог, в котором предлагается ввести имя для нового метода. После нажатия OK создается новый метод, в который перемещается выделенный участок кода. Вместо участка кода подставляется вызов нового метода. Алгоритм различает локальные переменные и поля класса. Первые он превращает в параметры нового метода (причем если переменные модифицируются, то параметры делаются ссылочными). Вторые - оставляет как есть (ведь новый метод также обладает прямым доступом к полям класса).
  • Encapsulate Field - позволяет превратить поле в свойство. При этом имеется возможность заменить все обращения к полям на обращения к новому свойству. При этом можно указать, что нужно обновлять - только внешний (по отношению к классу), или весь код. Алгоритм достаточно интеллектуален, чтобы отличить одноименную локальную переменную от обращения к полю класса, но, к сожалению, не додумывается до некоторых тонкостей. Так, например, свойства нельзя передавать по ссылке. Но, к сожалению, алгоритм этого не учитывает, и код может не компилироваться после рефакторинга. Однако польза несомненна. Ведь алогоритм намного интеллектуальнее замены по контексту. Причем если он чувствует, что не может справиться с поставленной задачей, то вместо того, чтобы испортить код, он выдает сообщение с предложением скомпилировать код, и не выполняет действий.
  • Extract Interface - позволяет выделить публичные методы класса в интерфейс. При этом сам класс почти не меняется. Он только делается унаследованным от этого интерфейса. В результате класс автоматически реализует необходимые методы. Сам интерфейс помещается в отдельный файл. Выделению предшествует диалог, где можно выбрать методы, которые нужно перенести в интерфейс, а также задать имя интерфейса и файла, в который он будет помещен.
  • Surround With - возможность окружить код некоторой конструкцией. Вот список поддерживаемых (по документации) конструкций: #if, do, unsafe, #region, while, using, коментарий, lock, try/catch, if, checked, try/finally, for, unchecked, foreach, fixed. В имеющейся у меня версии работали далеко не все из перечисленных конструкций. Например, не было поддержки комментариев.
  • Expansions - это развитие технологии "complete word", позволяющее создавать конструкции вроде for или switch путем написания их сокращенного имени и нажатия клавиши TAB. Аналогичная возможность в Delphi и Visual Assist называлась "шаблон кода" (code template). Работает она так. Например, пишете for, нажимаете TAB, и перед вами появляется следующий интерфейс:


В нем можно заполнить поля, выделенные желтым цветом, и нажать Esc для завершения.

В документации сказано, что можно создавать свои шаблоны, но не сказано, как это сделать. :)

  • Rename - позволяет переименовать метод, свойство, переменную и т.п. во всем проекте. Перед переименованием можно просмотреть список изменений.
  • Change Method Signature - позволяет изменить сигнатуру метода (список параметров). Если происходит добавление параметров, можно задать значения, которые будут подставлены в местах вызова этого метода.


Дизайн Web-страниц

В VS включен новый дизайнер Web-страниц. По словам разработчиков (сам я с ним не разбирался), он настолько наворочен по сравнению с предыдущей версией, что они решили дать ему отдельное имя - Visual Web Developer (далее VWD). VWD позволяет редактировать ASP.NET- и HTML-страницы. Причем весьма в этом преуспел. Он позволяет создавать Web-контент намного проще и быстрее, по сравнению с VS.NET 2003. Даже звучат заявления, что он в сочетании с ASP.NET 2.0 (входящей в .NET Framework 1.2) позволит на 70% сократить объем кода, необходимый для создания Web-приложения (а стало быть, и уменьшить время разработки). Так что если ваше Web-приложение к выходу новой версии VS будет готово менее, чем на 70%, стирайте весь код, написанный до этого и переписывайте все на новой версии (шучу, конечно).

Одна очень полезная возможность, появившаяся в VS - это возможность создавать Web-приложения в отдельном каталоге и не использовать IIS. Собственно, это можно было делать и раньше, но для этого нужно было делать много лишних телодвижений и хорошенько порыться в документации.

В ASP.NET 2.0 появилась куча новых Web-control-ов, и, естественно, все они поддерживаются в новой версии VS.

Так же обещается куча разных вкусностей с загадочными (вроде Task-based editing) и не очень (in-place editing) названиями. Обещают даже, что HTML-редактор больше не будет уничтожать HTML-код, сделанный программистом вручную. Кроме того, обещается, что HTML теперь будет совместим со стандартом XHTML. Это позволяет надеяться, что порожденный ASP.NET-код (шаблон для которого создан в VS) можно будет без труда подвергать XSLT-трансформации или изменять с помощью XML DOM.

Помните, когда только появилась VS 2002, нам рассказывали, что поддерживаемая ею модель разделения кода и визуального представления - это новое слово в создании Web-порталов, так как позволяет дизайнерам и программистам работать параллельно? Так вот, в новой версии разработчики VS пошли дальше, и теперь по умолчанию HTML-код визуального представления будет храниться вместе с кодом. Это позволит еще больше разделить работу дизайнера и программиста... уволив одного из них. :) Я просто поражаюсь, как рекламщики из Microsoft умудряются любую недоработку превратить в ценную "фичу". Если серьезно, то это новшество позволит упростить выкладывание страниц, так как теперь совершенно не обязательно тянуть за страницей сборку, содержащую код, а можно просто скопировать файл в нужный каталог. Кстати, это можно было делать и раньше, но настолько вручную, и с таким неудобством, что делать это отваживались только настоящие любители приключений. Естественно, что, как и ран ьше, код можно выносить отдельно, чему способствует новая возможность C# - "Partial types" (разделение одного класса на несколько файлов). IntelliSense теперь будет работать не только в файлах, содержащих код, но и в .aspx-файлах.

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

Появилось множество диалогов с настройками редактирования HTML, XML и т.п. данных.


Solution-ы и Проекты

Появилась возможность создавать временные проекты. Эта возможность позволит упростить изучение новых возможностей методом тыка. Создал проект... поэкспериментировал... и пошел дальше. Здорово! Хотя я лично предпочел бы сохранять плоды своих экспериментов. А вдруг потом понадобятся?

Специально для VB6-программистов добавлена упрощенная настройка опций компиляции и меню. Хотя я, честно говоря, хоть убей не могу понять, чего там было упрощать, но видимо нашлось много программистов так и не смогших прейти с VB6 на VB.NET. Кстати, для них улучшен визард, конвертирующий VB6-проекты в VB.NET-проекты (прошлый-то ничего путного сделать не позволял).

Solution-ы теперь позволяют создавать папки (ранее можно было создавать папки только внутри проектов). Это должно упростить создание очень больших Solutions.


Microsoft .NET Build Engine

В состав .NET Framework 1.2, VS.NET 2004 и следующий версии Windows Longhorn будет входить новая утилита "Microsoft .NET Build Engine", или по-простому "MS Build". Она призвана стать заменой морально устаревшей утилите make (nmake в исполнении Microsoft). Эта утилита использует командные файлы в формате XML, и скорее походит на NAnt. Самое приятное, что проекты новой версии VS будут совместимы с MS Build. Так что теперь проблем с компиляцией из командной строки или автономной компиляцией больше не будет.


Отладка

VB теперь поддерживает режим "Edit and Continue". Так что можно поправить код и продолжить отладку, почти как в VB6. В отличие от VC, работает эта возможность довольно шустро, однако не везде (например, были проблемы в generic-коде). Будем надеяться, что эти проблемы исчезнут к релизу.

Теперь в режиме отладки (уже во всех языках) доступны расширенные тултипы. Расширенность заключается в том, что у них появились зеленые шарики, при нажатии на которые появляется еще один тултип, в котором отображается детальная информация о содержимом предыдущего объекта. Распахивать тултипы таким образом можно очень долго, особенно если имеются циклические ссылки. Если кликнуть по данным, то прямо в этом тултипе появляется текстовое окно позволяющее изменить значение данных. В общем и целом очень удобно, но малость подглюкивает. Перед установкой новой версии VS у меня стояли нестандартная схема для Windows XP... Новые тултипы напрочь отказались работать корректно вместе с ней. Пришлось снести... схему. :) С "родными" схемами Windows XP тултипы работали корректно.

В окнах типа Watch появилась возможность просматривать строковые значения в отдельных окнах. При этом можно просматривать текст в виде простого текста, XML или HTML. Для отображения используется IE.

Появился некий "Extensible Framework for Viewing C# Data in the Debugger". По всей видимости, имеется в виду возможность наподобие той, что существовала в VC начиная с версии 6, позволяющая указывать среде, как отображать в тултипах тот или иной тип данных. Очень полезная возможность. Жаль только, что найти полноценного описания того, как это можно сделать, я так и не смог.

Упростилась удаленная отладка. Теперь на удаленную машину достаточно скопировать один файл. Стала возможной удаленная отладка 64-битных приложений (как managed-, так и обычных).

Улучшена поддержка managed-отладки. В чем это заключается, я так и не заметил, но говорят, что улучшена поддержка серверов символов и повышено качество диагностических сообщений.

Теперь можно получать и исследовать мини-дампы, содержащие managed-код.

Так же произошла реинкарнация окна Immediate из VB6. Правда, C# и VB.NET от этого не стали интерпретируемыми, так что перед тем как вызвать из редактора тот или иной метод, нужно скомпилировать проект. :)


Deployment

Видимо разработчики одного из подразделений нашли фатальный недостаток в Windows Installer Microsoft - его писали не они! И сразу же решили его исправить. Результатом их самоотверженного труда стала новая технология "ClickOnce Deployment" (Deployment одним кликом). Предполагается, что, используя эту технологию, можно будет устанавливать приложения с сети (локальной или Internet) одним кликом мыши. В общем, устанавливать вирусы будет еще проще. :)

Теперь вы сможете включать дополнительные необходимые компоненты вроде .NET Framework в состав своих пакетов установки, что еще больше усилит эффект от технологии ClickOnce Deployment.


Automation

Множество изменений внесено в automation-модель VS. Например, теперь add-in для VS.NET можно описывать в простых файлах регистрации, основанных на формате XML. Для подключения add-in-а достаточно будет скопировать файл регистрации в одну из папок VS, и она автоматически подхватит add-in.

Вряд ли стоит в обзорной статье описывать все изменения automation-модели, так как она интересна только тем, кто намерен самостоятельно расширять возможности VS.NET.


Help

Улучшен HTML-Help. Теперь поиск вынесен на отдельную страницу, и в нем можно искать как по локальной БД, так и онлайн.

По умолчанию HELP теперь открывается в отдельном окне.


Docking окон

Когда я впервые увидел как работает (как ее назвать-то по-русски?... стыковка, что ли?) стыковка окон, я, откровенно говоря, испугался. Стоило потянуть прикрепленное сбоку окно, чтобы перетащить его на другое место, как окно стало полупрозрачным, а со всех сторон экрана начали появляться странные предметы (см. рисунок 3). Когда я пришел в себя, то понял, что это новая система стыковки окон. После небольшого привыкания оказалось, что пользоваться ею очень удобно, так как точно известно, куда нужно подвести курсор мыши, чтобы приклеить окно в нужное место.

Рисунок 3. Docking окон


Поддержка новых продуктов Microsoft

VS.NET 2004 поддерживает все новые продукты Microsoft, от уже вышедшего офиса 2003 до выходящей параллельно с VS новой версии MS SQL Server 2004 (кодовое название Yukon) и даже Windows Longhorn (выход которой запланирован на 2005-2006 год).


Заключение

Понятно, что в такой маленькой статье тяжело сделать серьезной обзор такого мощного продукта, как VS.NET 2004 (Whidbey), но думаю, общее представление о нововведениях вы получили. Так, у меня ушло не более пяти минут на то, чтобы создать на C# хранимую процедуру для Юкона, и примерно столько же, чтобы создать собственную панель управления для новой версии Windows Explorer из Longhorn-а.

Стоит ли ждать этого продукта? У меня нет ни единого сомнения - стоит! Вместе с .NET Framework 1.2 и благодаря великолепной интеграции с новыми продуктами VS.NET 2004 позволит существенно поднять продуктивность разработки.

Эта статья на RSDN


Ведущий рассылки: Алекс Jenter jenter@rsdn.ru
Публикуемые в рассылке материалы принадлежат сайту RSDN.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.prog.visualc
Отписаться

В избранное