Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Обзор VS 2005 |
Автор: Exception 1.12.2005, 18:06 | ||||||||||||||||||||||||
7 ноября мелкие наконец-то выпустили Visual Studio 2005. После покупки я малость разочаровался: он не хотел ставиться. Но (спасибо arilou), оказалось, что необходимо скопировать инсталляшку на винт, а потом уже ставить... Итак, первым, что я увидел, была новая Start Page. Теперь на ней можно увидеть последние новости Visual Studio. А можно и свой RSS-Feed поставить... Как пожелаете ![]() Интерфейс изменился по сравнению с первой бетой; насчет второй не знаю - не юзал. Ну да не в нём суть. Итак... начнём по порядку. В Visual Studio 2005 появилась такая интересная штука, как IntelliSense Code Snippets. Сейчас поясню. Допустим, нам нужно использовать код доступа к БД, который вам ну очень лень набирать ![]() ![]() Кстати, теперь настройки проекта видны в виде иконки 'My Project' в Solution Explorer'е. Впрочем, это косметика)) Ещё M$ довольно обширно рекламировала новую фичу Вижл Студио - "Exception Assistant". Мол, помогает устранять ошибки. Ну я конечно его попробовал. Как это выглядит, видно на скриншоте. Примитивные ошибки он устраняет довольно прилично. Короче, это из нововведений типа "без него хорошо, а с ним ещё лучше" ![]() Ну и пара особенных вкусностей, о которых не хотелось говорить в суе ![]() Помните времена VB6? Запустил прогу... вдруг, во время Step замечаем, что случайно недописали одну строчку... или написали лишнюю... Смело ставим исполнение на паузу и правим код. Нажимаем Run - и никакой перекомпиляции! Прога исполняется с изменениями! К чему же я это? Ах, да. Visual Studio 2005 тоже поддерживает эту возможность (зовущуюся Edit-And-Continue). Причем ещё в большем объёме: можно перетащить стрелочку, указывающую текущую строку в любое место кода, и он будет исполняться оттуда! Кайф ![]() И напоследок о самой среде. В ней появилась возможность, которой так не хватало в 2003. UML... Меня охватил неописуемый восторг, когда я, щёлкнув правой по моему нэймспэйсу в Class View, увидел строчку Class Diagram. Это просто чудо (нет-нет, мелкие мне за рекламу не платят ![]() Кстати, чуть не забыл упомянуть ещё об одной фиче. Называется она "Object Test Bench". Честно говоря, нашёл я её не сразу. Видимо, мелкие хотят, чтобы люди любили окошко Class View, хотя мало кто им пользуется - не очень-то это удобно. Но теперь его юзать придётся ![]() Кстати, дебаггинг в VS 2005 тоже стал удобнее. Теперь, если задержать курсор над переменной, появится деревце, в котором описаны его члены (не нужно лазать в Autos). В общем, видно на скриншоте. Также появились визуализаторы - Text, XML и DataSet Visualizer. Теперь стринговые, XML-евые и датасетовые значения можно просматривать в более удобном виде. Если нажать кнопочку с лупой (напротив самого свойства/поля), появляется нужный визуализатор. Примеры текстового и DataSet'ового есть на скриншоте. Насчёт проектов: почему-то в New Project нету проекта ASP.NET Application. Зато появилась новая кнопочка "New Web Site...". Теперь все ASP.NET - проекты лежат там (см. скриншот). Сказать честно, когда я глянул в HTML-код, генерируемый VS 2005, я был приятно удивлён: он полностью соответствовал стандарту XHTML, в отличие от VS 2003. Есть ещё несколько "косметических" изменений: например, теперь все using aka Imports не засоряют код страницы, а объявляются в web.config. Появилось достаточно много новых контролов для ASP.NET. Причём тулбокс теперь составлен тоже ввиде дерева (как в BDS). Добавились контролы типа Login (см. скриншот), SiteMapPath (потипа Форум прогеров > .NET > общие вопросы по .NET и C#), ImageMap, Localize, и многие другие. Кстати, в design-time около контролов появляются окошки типа Control Tasks, позволяющие настроить вид и поведение компонента. Также появилась новая тулза "ASP.NET Web Application Administration Tool". Ставится вместе с ASP.NET 2.0. Я ещё не очень с ней разобрался, но, видимо, она служит для упрощённого управления файлом web.config. Так.. вроде по ASP.NET это всё. Теперь по Windows Application. Захотелось опробовать Windows-приложения: авось чего нового. Захожу в код формы... а там... ![]()
Меня хватил шок. Где Windows Forms Designer Generated Code??? К счастью, его я обнаружил в соседнем файле *.designer.cs. Теперь codebehind есть и для форм. Похвально, зачастую всякие InitializeComponent() мне очень мешали. Кстати, теперь можно добавлять референсы на exe-файлы. Лично мне этого очень не хватало. Что ж... Конечно, сперва я глянул на тулбокс. Конечно, появились новые контролы. Начнём с пользовательского интерфейса. Появилась поддержка красивых меню - компоненты MenuStrip и ContextMenuStrip. Не совсем понял значение слова Strip, ну да ладно))). Выглядят они красиво (см. скриншот). Кстати, в меню можно засунуть текстбокс и комбобокс. Наонец-то все контролы становятся по умолчанию XP-шными. И код для EnableVisualStyles пишется автоматически. Для любителей работать с БД появился новый контрол DataGridView. Впринципе, он похож на DataGrid, но является более расширяемым и настраиваемым. Короче, он удобнее. Кстати, вместе с другими Strip'ами ( ![]() Насчёт Splitter'а: работа с ним была не слишком удобной, так что появился компонент SplitContainer - две панели, разделённые сплиттером. Само смешное, что мне стоило больших трудов удалить его с формы без вмешательства в её код. Оказалось, чтобы его удалить, нужно щёлкнуть именно на самом сплиттере, а потом уже жать <Del>. Ещё появился довольно интересный элемент TableLayoutPanel. В нём элементы группируются как в HTML-таблице. Всё это мне напоминает Layout'ы из Жавы. Как обычно, см. скриншот ![]() Ну и закоренелым любителям HTML: FlowLayoutPanel. Думаю, тут нечего объяснять. См. скриншот. Ещё есть контрол MaskedTextBox, которого почему-то не было в 1.1, WebBrowser и RichTextBox. Тут уж точно всё понятно. Кстати, они являются лишь оболочками над COM, так что тут нету ничего нового. И чуть не забыл про ещё один Strip - ToolStrip. Как вы наверное догадались, это - XP-шный тулбар. Ничего так ![]() Появились "новые" контролы - BackgroundWorker, DataSet (!), FileSystemWatcher и куча других. Знакомо, а? Это - контролы для тех, кому лень в коде объявить лишнюю переменную.. Впрочем, код не мусорится лишними обявлениями... Решайте сами, будете ли вы их юзать. Я думаю так: если какой-нибудь FileSystemWatcher используется одной процедурой, объявлять его надо в коде, а если многими - ставить компонент. Но принципиальной разницы не вижу никакой. Ещё появилось новое окошко - Document Outline (см. скриншот). В нём видны контролы, остроенные в виде иерархического дерева. Позволяет быстренько удалить заﭺﻁלּвший контрол, который почему-то не выделяется (а такое частенько бывает(). Чуть не забыл про ещё один контрол: ToolStripContainer. Почему-то я не понял, как его юзать, но зачем он - понятно из названия. Про контролы вроде всё... Кстати, появились новые "шаблоны" форм, вылезающие в Add Item... - LoginForm, Dialog, AboutBox, MdiParent и SplashScreen. Все они видны на скриншотах. Насчёт нововведений в самом дотнете... Появились дженерики. Для тех, кто не знает, что это, скажу, что это - управляемый аналог template'ов из Си-Пи-Пи. Причём MC++ умеет работать и с родными шаблонами и с дженериками. Теперь предпочтительно использовать пространство имён System.Collections.Generic. Причём IntelliSense "чует" тип дженерика и показывает его (см. скриншот). Однако, в C# он почему-то не обнаруживает ошибок до компиляции (в отличие от VB). Выглядит это так:
Теперь множество классов построено на дженериках, так что придётся переучиваться ![]() Причём очень интересно, что можно объявлять свой класс-дженерик и ограничивать типы объектов, которые ему можно передать:
Теперь вот такой код не скомпилируется:
Кстати, благодаря дженерикам появился замечательный класс Nullable. Чем-то он напоминает WeakReference. Объявив ссылочный объект как Nullable, вы сможете присваивать ему значение Nothing (вместо всяких дебилистических DBNull). Объявление выглядит это так:
Теперь у x свойство HasValue устанавливается в значение False. Это нужно, например, чтобы отличить нулевое значение от его отсутствия ![]() Кстати, в C# вышеприведённое объявление можно записать так:
Вот так-то. Заметил новое пространство имён - System.Media. В нём лежат классы SoundPlayer и другие, с ним связанные. Думаю, их нах... то есть назначение (клавишей промахнулся ![]() И несколько "приятностей" для программистов VB.NET. Наконец-то VB.NET выровнялся по возможностям с шарпаком! Встречайте: Перегрузка Операторов и XML-Комментирование Кода! [Бурные овации] А если серьёзно, то теперь и VB.NET умеет ЭТО.
Кайф, да? И это не всё:
XML-комменты обозначаются тремя апострофами. Ну и My Namespace - тоже "специально для VB". В любом месте кода вы можете обратиться к фиктивному пространству имён My (оно составляется из разных пространств имён, правда я не понял, когда - в рантайме, что ли...). В нём содержатся классы для удобной работы с файлами, системныим настройками, мышью, клавой, да много с чем... Вот вроде бы всё, о чём я хотел бы рассказать. Если вы нашли что-либо интересное, о чём я не упомянул или какую-либо мою ошибку - милости просим, постите сюда ![]() Успехов! Run-time Error http://dan-abr.narod.ru/vs2005.rar |
Автор: Exception 2.12.2005, 17:11 | ||||||||
Кстати (фанатам C++): Теперь страшный зверь Managed Extensions For C++ переименовался в C++/CLI и стал гораздо более прирученным и домашним. Сравните код (пример из MSDN): Managed Extensions Syntax
C++/CLI Syntax
Чуете разницу? Так что, Чип, переходи к дотнетчикам ![]() P.S. Забыл написать, что теперь getter и setter могут иметь разные области видимости! Типа такого:
|
Автор: batigoal 5.12.2005, 09:31 |
Почитал. Интересно. Однако удивлен, что Студия не умела этого раньше. Многими из этих фич Java IDE обладают уже давно. |
Автор: Exception 5.12.2005, 09:52 | ||
Так оттуда и тырили ![]() И из BDS |
Автор: batigoal 5.12.2005, 10:00 | ||
А что это? |
Автор: Exception 5.12.2005, 10:10 | ||
Borland Developer Studio aka Delphi 2005 ![]() Но вот скорость его с VS не сравнится ![]() |
Автор: mr.DUDA 5.12.2005, 10:50 |
[ОФФТОП] если уж и тырить - так надо было тырить из Eclipse -- чудесная вещь... чего только стоят IntelliSence-тултипы с suggestions, превращающиеся в memo-поля по нажатию F2, и всего остального не перечесть, студии ещё расти и расти до этого... [/ОФФТОП] |
Автор: Aurus 16.12.2005, 19:21 |
Я может совсем "дурацкий" вопрос задам, но уж помогите новичку. Я учился прогать в Borland C++ Version 3, потом и за ПХП брался - кароче везде есть хорошая подсветка синтаксиса. Сейчас VS 2005 поставил: весь код обычный черный шрифт ![]() |
Автор: Exception 16.12.2005, 20:51 | ||
ЭТО КАК??? Ты видно текстовый файл в нём редактируешь ![]() |
Автор: Aurus 17.12.2005, 11:37 |
можно как то регулировать подсветку синксиса или нет? |
Автор: Exception 17.12.2005, 12:10 |
А чем она тебя не устраивает? Изменить ее можно через Options, но включена она всегда. Покажи скриншот, где у тебя не подсвечивается |
Автор: Aurus 20.12.2005, 18:45 |
Run-time error, с подсветкой разобрался. спсб. теперь вот вопрос: установил VS 2005,а с ней установился ещё MS SQL Server 2005. Вот я не пойму - он урезанный какой-то или как? В меню пуск такое содержимое: Microsoft SQL Server 2005->Configuration Tools-> SQL Server Configuration Manager SQL Server Error and Usage Reporting SQL Server Surface Area Configuration Нет никакого SQL Query Analyzer и пр... |
Автор: Exception 20.12.2005, 18:49 |
Express Edition. Действительно, никакого Query Analizer я не нашел.. Ну да и не нужен мне 2005-й пока. А будет нужен -- лотки в метро рулят |
Автор: Coocky 20.12.2005, 19:24 |
Есть МФС? Не изменилось ли к лучшему? ![]() Че смеетесь!? А вдруг... ![]() |
Автор: Aurus 20.12.2005, 19:31 |
т.е. MS SQL Server 2005 Express Edition можно смело удалять и ставить 2000. |
Автор: Exception 20.12.2005, 20:09 |
Как хочешь. Кстати, только что купил SQL Server 2005 Enterprise. Буду смотреть.. |
Автор: HalkaR 27.12.2005, 14:40 |
К слову о снипетах - единственное их неудобство, то что их то писать приходиться ручками. Мне говпарили, что есть сниппет для создания сниппетов - кто-нить это чудо видел? |
Автор: Budda 27.12.2005, 23:54 | ||
![]() Есть ещё такая фишка как "Code Definition Window" - позволяет мгновенно видеть определение объектов, классов... Вобщем студия рулёзная - только памяти нужно её прикупить ![]() |
Автор: Exception 28.12.2005, 12:15 |
Не "с 6-й студии", а "до 6-й студии". В VS2003 этого нет. Насчет сниппетов -- на http://systemwindowsforms.net лежит прога для их создания. |
Автор: Guest 28.12.2005, 12:22 |
Run-time errorЕсть. Я начал юзать 2003-ю студию 3 месяца назад, и юзал буквально до этой субботы (когда поставил 2005-ю). Есть там эта фича (по крайней мере в VC++), сам её юзал довольно активно. Возможно она по умолчанию не включена? Включается она в Project Properties -> Linker->General->Enable Incremental Linking : "Yes (/INCREMENTAL)". |
Автор: Budda 28.12.2005, 12:23 |
Run-time error линк кривой - может где-то точку пропустил? |
Автор: Exception 28.12.2005, 14:04 |
Угу, кривой. Исправляю: http://windowsforms.net . Насчет VC++ не знаю, говорю о .NET-языках. Фишка в том, что ты можешь изменять прогу во время выполнения без перекомпиляции. Сомневаюсь, что в С++ это можно |
Автор: batigoal 28.12.2005, 14:14 | ||
Нефига себе. А как это возможно? Ведь язык не скриптовый, компиляция в том или ином виде все равно нужна. |
Автор: Exception 28.12.2005, 14:23 |
Вот самое точное: http://msdn.microsoft.com/vbasic/downloads/tools/snippeteditor. Добавлено @ 14:23 Вот самое точное: http://msdn.microsoft.com/vbasic/downloads/tools/snippeteditor. Добавлено @ 14:26 Возможно. VS использует CodeDom при исполнении, а посему ему не важно, изменен ли код: IL генерится динамически. Конечно, это подтормаживает прогу в дебуге, но это того стоит ![]() |
Автор: mr.DUDA 30.12.2005, 18:40 | ||
Ну, там на самом деле есть ряд ограничений: нельзя добавлять новые классы, новые директивы using (в C#), новые методы в класс и т.д. Наверное это связано с тем, что edit-and-continue работает только в рамках методов, т.е. перекомпилирует код но не метаданные. |
Автор: Exception 6.4.2006, 09:25 |
Ой, черт.. Я же удалил аккаунт на народе ![]() |
Автор: Любитель 9.4.2006, 12:59 | ||
Как раз в обычном C++ это было начиная с 6-ой студии ![]() |
Автор: Exception 9.4.2006, 15:09 |
Эээ... вроде да ![]() ![]() Добавлено @ 15:12 ![]() Это как же? Я имею в виду - поставил брейкпоинт, во время выполения меняешь любые строчки (не меняя интерфейс класса), переносишь куда угодно стрелочку, указывающую на выполняющуюся строчку и выполняещь с указанного места. |
Автор: mr.DUDA 9.4.2006, 16:18 | ||
Edit-and-continue это немного не то. Редактируешь код в процессе debug-а, он перекомпилируется и выполняется дальше. |
Автор: OverBug 24.9.2006, 12:10 |
Здрасти! Я вот тут скачал и поставил VS2005 Express Edition. Проблема в том, что в ней нет визардов для содания приложений типа Win32(неконсольный), MFC, ATL и т.д. , зато есть .net wizardы. пытался что-то в инете найти - все они для 6 студии. можешь кто или у кого есть ссылка на такие визарды. Заранее спасибо! |
Автор: Sartorius 24.9.2006, 12:16 |
Здается мне , что нато она и FreeWare.... - неполная функциональность. |
Автор: mr.DUDA 24.9.2006, 13:10 |
Сдаётся мне, что скачан был VC# Express Edition... |
Автор: $tatic 24.9.2006, 16:19 |
В VC++ Express есть визарды для неуправляемых приложений, поэтому это точно C# ![]() А может VB или J# ![]() |
Автор: OverBug 24.9.2006, 20:16 |
вот инфа из свойств ярлыка. Объект:"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\VCExpress.exe" Коментарий:Launch Microsoft Visual C++ 2005 Express Edition. Ну не ламер я такой, чтоб С/С++ от С#,J и уж VB не отличить. Работал сначала на VS 7.1, потом решил скачать с инета, с Microsoft сайта VC++ 2005, удалось по халяве только Express Edition, вот и хочу узнать моно-ли ее наростить путем добавления нужных визардов, хотябы добавить возможность создания МФЦ приложений визардом. кстати, а что такое неуправляемые приложения??? |
Автор: batigoal 24.9.2006, 20:58 |
Как я это понимаю: управляемые приложения - это те, которые выполняются неким исполняющим механизмом, т.е. интерпретируются runtime-средой (JVM, .NET runtime, etc). Неуправляемые - выполняются непосредственно ОС. |
Автор: reloni 24.9.2006, 21:36 |
Любое приложение, написанное под .NET является управляемым, т.к. выполняется внутри CLR. Но использование указатилей - это уже не управляемый код ![]() ps поставил только что VC++ Express, действительно Win32 только консоль доступна. |
Автор: mr.DUDA 25.9.2006, 08:51 | ||||
MFC и нету в поставке Express Edition, см. FAQ:
P.S. Насколько я помню, даже сами по себе либы и заголовки там занимали достаточно нехилое место (Debug/Release).
[offtopic]слово "интерпретируются" убрать бы...[/offtopic] |
Автор: batigoal 25.9.2006, 09:51 |
Потому и добавка "Какяэтопонимаю" ![]() |
Автор: OverBug 25.9.2006, 10:43 |
неуправляемые приложения - коварный однако термин... Но все же, можно ли эту IDEшку нарастить визардами? Они(визарды) хоть отдельно распространяются? |
Автор: mr.DUDA 25.9.2006, 14:30 |
Визард МФЦ или ATL, даже будучи поставлен руками (если это вообще возможно), сам по себе не даст возможности компилить проект, потому как самих H- и LIB- файлов для МФЦ/ATL со студией не распространяется. Компилятор просто ругнётся на fatal error: no X file found. |
Автор: OverBug 25.9.2006, 15:55 |
а если поставить PSDK. у меня вот есть версия 2005 года, вернее я так и сделал, но визардов-то нет, а я привык к ним, и отвыкать не хоца. да. фигня которую я поставил, всетаки называется IDE, а я ее студией где-то называл ![]() ![]() ![]() |
Автор: reloni 25.9.2006, 16:22 | ||
А разве студия не есть IDE? ![]() Просто экспресс урезанная. |