Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обзор VS 2005, от Run-time Error 
:(
    Опции темы
Exception
  Дата 1.12.2005, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



7 ноября мелкие наконец-то выпустили Visual Studio 2005.
После покупки я малость разочаровался: он не хотел ставиться. Но (спасибо arilou), оказалось, что необходимо скопировать инсталляшку на винт, а потом уже ставить...
Итак, первым, что я увидел, была новая Start Page. Теперь на ней можно увидеть последние новости Visual Studio. А можно и свой RSS-Feed поставить... Как пожелаете smile . Правда, если вы не подключены к инету, периодически будет появляться окошко "Подключение к интернету", которое VS старается осуществить. Наверное, это как-то отключается, но я пока не нашёл где.
Интерфейс изменился по сравнению с первой бетой; насчет второй не знаю - не юзал.
Ну да не в нём суть.
Итак... начнём по порядку.
В Visual Studio 2005 появилась такая интересная штука, как IntelliSense Code Snippets. Сейчас поясню. Допустим, нам нужно использовать код доступа к БД, который вам ну очень лень набирать smile . Или, скажем, код открытия XML-документа или ещё чего))) Щелкаем правкнопкой, выбираем Insert Snippet... Выбираем нужный сниппет и делаем даблклик. Результат можете видеть на скриншоте. Осталось только заполнить зелёные поля необходимыми значениями... Лепота smile Кстати, можно определить собственные сниппеты и юзать их впоследствии. Все сниппеты хранятся в XML-файлах с особой структурой.
Кстати, теперь настройки проекта видны в виде иконки 'My Project' в Solution Explorer'е. Впрочем, это косметика))
Ещё M$ довольно обширно рекламировала новую фичу Вижл Студио - "Exception Assistant". Мол, помогает устранять ошибки. Ну я конечно его попробовал. Как это выглядит, видно на скриншоте. Примитивные ошибки он устраняет довольно прилично. Короче, это из нововведений типа "без него хорошо, а с ним ещё лучше" smile
Ну и пара особенных вкусностей, о которых не хотелось говорить в суе smile
Помните времена VB6? Запустил прогу... вдруг, во время Step замечаем, что случайно недописали одну строчку... или написали лишнюю... Смело ставим исполнение на паузу и правим код. Нажимаем Run - и никакой перекомпиляции! Прога исполняется с изменениями! К чему же я это? Ах, да. Visual Studio 2005 тоже поддерживает эту возможность (зовущуюся Edit-And-Continue). Причем ещё в большем объёме: можно перетащить стрелочку, указывающую текущую строку в любое место кода, и он будет исполняться оттуда! Кайф smile))
И напоследок о самой среде. В ней появилась возможность, которой так не хватало в 2003. UML...
Меня охватил неописуемый восторг, когда я, щёлкнув правой по моему нэймспэйсу в Class View, увидел строчку Class Diagram. Это просто чудо (нет-нет, мелкие мне за рекламу не платят smile , как говорят на буржуйском, I mean it). Достаточно взглянуть на скриншот. Теперь классы можно дизайнить прямо в VS. Код, разумеется, генерится автоматически. Короче, очень полезно. Например, можно прямо в Class Designer'е создать новый класс/интерфейс/перечисление и добавить к нему поле/метод/свойство...
Кстати, чуть не забыл упомянуть ещё об одной фиче. Называется она "Object Test Bench". Честно говоря, нашёл я её не сразу. Видимо, мелкие хотят, чтобы люди любили окошко Class View, хотя мало кто им пользуется - не очень-то это удобно. Но теперь его юзать придётся smile . Только через него можно получить доступ к Class Designer'у (см. выше) и к Object Test Bench. Этот Object Test Bench - инструмент, позволяющий в design-time (хотя проект компилится при этом) дебажить какой-нибудь отдельный класс (создать экземпляр, выполнять его методы, изменять значения свойств, etc). При этом в окошке OTB рисуется овал, обозначающий класс (как в Class Designer'е), у которого показаны все доступные свойства/методы в виде иерархического дерева (см. скриншот). При этом, если мы делали static-класс, разумеется, создать инстанс у нас не получится, но мы сможем юзать его статические члены и смотреть возвращаемые значения.
Кстати, дебаггинг в 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-приложения: авось чего нового. Захожу в код формы... а там... smile
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

Меня хватил шок. Где Windows Forms Designer Generated Code??? К счастью, его я обнаружил в соседнем файле *.designer.cs. Теперь codebehind есть и для форм. Похвально, зачастую всякие InitializeComponent() мне очень мешали.
Кстати, теперь можно добавлять референсы на exe-файлы. Лично мне этого очень не хватало.
Что ж... Конечно, сперва я глянул на тулбокс. Конечно, появились новые контролы. Начнём с пользовательского интерфейса. Появилась поддержка красивых меню - компоненты MenuStrip и ContextMenuStrip. Не совсем понял значение слова Strip, ну да ладно))). Выглядят они красиво (см. скриншот). Кстати, в меню можно засунуть текстбокс и комбобокс.
Наонец-то все контролы становятся по умолчанию XP-шными. И код для EnableVisualStyles пишется автоматически.
Для любителей работать с БД появился новый контрол DataGridView. Впринципе, он похож на DataGrid, но является более расширяемым и настраиваемым. Короче, он удобнее.
Кстати, вместе с другими Strip'ами ( smile ) идёт и StatusStrip. Это - достойная замена StatusBar'у с возможностью запихать в него прогрессбар, кнопочку с выпадающим меню (которое почему-то не XP-шное) или DropDown.
Насчёт Splitter'а: работа с ним была не слишком удобной, так что появился компонент SplitContainer - две панели, разделённые сплиттером. Само смешное, что мне стоило больших трудов удалить его с формы без вмешательства в её код. Оказалось, чтобы его удалить, нужно щёлкнуть именно на самом сплиттере, а потом уже жать <Del>.
Ещё появился довольно интересный элемент TableLayoutPanel. В нём элементы группируются как в HTML-таблице. Всё это мне напоминает Layout'ы из Жавы. Как обычно, см. скриншот smile
Ну и закоренелым любителям HTML: FlowLayoutPanel. Думаю, тут нечего объяснять. См. скриншот.
Ещё есть контрол MaskedTextBox, которого почему-то не было в 1.1, WebBrowser и RichTextBox. Тут уж точно всё понятно. Кстати, они являются лишь оболочками над COM, так что тут нету ничего нового.
И чуть не забыл про ещё один Strip - ToolStrip. Как вы наверное догадались, это - XP-шный тулбар. Ничего так smile . На него помещается всё, что можно засунуть на StatusStrip.
Появились "новые" контролы - BackgroundWorker, DataSet (!), FileSystemWatcher и куча других. Знакомо, а? Это - контролы для тех, кому лень в коде объявить лишнюю переменную.. Впрочем, код не мусорится лишними обявлениями... Решайте сами, будете ли вы их юзать. Я думаю так: если какой-нибудь FileSystemWatcher используется одной процедурой, объявлять его надо в коде, а если многими - ставить компонент. Но принципиальной разницы не вижу никакой.
Ещё появилось новое окошко - Document Outline (см. скриншот). В нём видны контролы, остроенные в виде иерархического дерева. Позволяет быстренько удалить заﭺﻁלּвший контрол, который почему-то не выделяется (а такое частенько бывает().
Чуть не забыл про ещё один контрол: ToolStripContainer. Почему-то я не понял, как его юзать, но зачем он - понятно из названия.
Про контролы вроде всё...
Кстати, появились новые "шаблоны" форм, вылезающие в Add Item... - LoginForm, Dialog, AboutBox, MdiParent и SplashScreen. Все они видны на скриншотах.
Насчёт нововведений в самом дотнете...
Появились дженерики. Для тех, кто не знает, что это, скажу, что это - управляемый аналог template'ов из Си-Пи-Пи. Причём MC++ умеет работать и с родными шаблонами и с дженериками.
Теперь предпочтительно использовать пространство имён System.Collections.Generic. Причём IntelliSense "чует" тип дженерика и показывает его (см. скриншот). Однако, в C# он почему-то не обнаруживает ошибок до компиляции (в отличие от VB).
Выглядит это так:
Код

            Dictionary<string, int> mydic = new Dictionary<string,int>();
            mydic.Add("One",1);
            mydic.Add("Two", 2);
            //Не скомпилируется
            //mydic.Add(DateTime.Now, "Current time");

Код

            Dim mydic As New Dictionary(Of String, Integer)()
            mydic.Add("One",1)
            mydic.Add("Two", 2)
            'Не скомпилируется
            'mydic.Add(DateTime.Now, "Current time")

Теперь множество классов построено на дженериках, так что придётся переучиваться smile
Причём очень интересно, что можно объявлять свой класс-дженерик и ограничивать типы объектов, которые ему можно передать:
Код

class MyClass<T where T:MyInterface>
{
/*...*/
}

Код

Class [MyClass](Of T As System.Exception)
'...
End Class

Теперь вот такой код не скомпилируется:
Код

//Не скомпилируется!
MyClass<int> x = new MyClass<int>();

Код

'Не скомпилируется!
Dim x As New MyClass(Of Integer)()

Кстати, благодаря дженерикам появился замечательный класс Nullable.
Чем-то он напоминает WeakReference.
Объявив ссылочный объект как Nullable, вы сможете присваивать ему значение Nothing (вместо всяких дебилистических DBNull).
Объявление выглядит это так:
Код

Nullable<int> x;
x = 0;
x = 1;
x = null;

Код

Dim x As Nullable(Of Integer)
x = 0
x = 1
x = Nothing

Теперь у x свойство HasValue устанавливается в значение False. Это нужно, например, чтобы отличить нулевое значение от его отсутствия smile
Кстати, в C# вышеприведённое объявление можно записать так:
Код

//Nullable<int> x;
int? x;

Вот так-то.
Заметил новое пространство имён - System.Media. В нём лежат классы SoundPlayer и другие, с ним связанные. Думаю, их нах... то есть назначение (клавишей промахнулся smile ))) понятно.
И несколько "приятностей" для программистов VB.NET.
Наконец-то VB.NET выровнялся по возможностям с шарпаком!
Встречайте: Перегрузка Операторов и XML-Комментирование Кода!
[Бурные овации]
А если серьёзно, то теперь и VB.NET умеет ЭТО.
Код

Class [MyClass]
    Private _Value As Integer
    Public Property Value() As Integer
        Get
            Return _Value
        End Get
        Set(ByVal value As Integer)
            _Value = value
        End Set
    End Property

    Shared Operator +(ByVal obj1 As [MyClass], ByVal obj2 As [MyClass]) As [MyClass]
        Dim temp As New [MyClass]
        temp.Value = obj1.Value + obj2.Value
        Return temp
    End Operator
End Class
'..
'..
'..
        Dim x As New [MyClass]
        x.Value = 2
        Dim y As New [MyClass]
        y.Value = 2
        Debug.WriteLine((x + y).Value)

Кайф, да?
И это не всё:
Код

    ''' <summary>
    ''' The main entry point for the application.
    ''' </summary>
    <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New MyForm())
    End Sub

XML-комменты обозначаются тремя апострофами.
Ну и My Namespace - тоже "специально для VB".
В любом месте кода вы можете обратиться к фиктивному пространству имён My (оно составляется из разных пространств имён, правда я не понял, когда - в рантайме, что ли...).
В нём содержатся классы для удобной работы с файлами, системныим настройками, мышью, клавой, да много с чем...
Вот вроде бы всё, о чём я хотел бы рассказать.
Если вы нашли что-либо интересное, о чём я не упомянул или какую-либо мою ошибку - милости просим, постите сюда smile
Успехов!
Run-time Error
Архив со скриншотами
PM   Вверх
Exception
Дата 2.12.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Кстати (фанатам C++):
Теперь страшный зверь Managed Extensions For C++ переименовался в C++/CLI и стал гораздо более прирученным и домашним.
Сравните код (пример из MSDN):
Managed Extensions Syntax
Код

public __gc __sealed class Student
{
    private:
        double m_grade;
        String* m_name;
    public:
        __property double get_Grade() { return m_grade; }
        __property void set_Grade(double newGrade) { m_grade = newGrade; }

        __property String* get_Name() { return m_name; }
        __property void set_Name(String* newName) { m_name = newName; } 
}


C++/CLI Syntax
Код

public ref class Student sealed
{
    private:
        double m_grade;
    public:
        // standard property syntax
        property double Grade
        {
            double get() { return m_grade; }
            void set(double newGrade) { m_grade = newGrade; }
        }

        // trivial property 
        // compiler can generate accessors and backing store
        property String^ Name;
}


Чуете разницу?
Так что, Чип, переходи к дотнетчикам smile
P.S. Забыл написать, что теперь getter и setter могут иметь разные области видимости!
Типа такого:
Код

public class MyClass{
    public int Test{
        get { }
        internal set { }
       
    }
}

Код

Public Class [MyClass]
    Public Property Test() As Integer
        Get

        End Get
        Friend Set(ByVal value As Integer)

        End Set
    End Property
End Class


Это сообщение отредактировал(а) Run-time error - 2.12.2005, 17:12
PM   Вверх
batigoal
Дата 5.12.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Почитал. Интересно. Однако удивлен, что Студия не умела этого раньше. Многими из этих фич Java IDE обладают уже давно.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Exception
Дата 5.12.2005, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Lamer @ 5.12.2005, 10:31)
Многими из этих фич Java IDE обладают уже давно.

Так оттуда и тырили smile
И из BDS
PM   Вверх
batigoal
Дата 5.12.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Цитата(Run @ 5.12.2005, 10:52)
из BDS

А что это?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Exception
Дата 5.12.2005, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Lamer @ 5.12.2005, 11:00)
А что это?

Borland Developer Studio aka Delphi 2005 smile
Но вот скорость его с VS не сравнится smile
PM   Вверх
mr.DUDA
Дата 5.12.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



[ОФФТОП]
если уж и тырить - так надо было тырить из Eclipse -- чудесная вещь... чего только стоят IntelliSence-тултипы с suggestions, превращающиеся в memo-поля по нажатию F2, и всего остального не перечесть, студии ещё расти и расти до этого...
[/ОФФТОП]


--------------------
user posted image
PM MAIL WWW   Вверх
Aurus
Дата 16.12.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.8.2005
Где: Новосибирск

Репутация: нет
Всего: 0



Я может совсем "дурацкий" вопрос задам, но уж помогите новичку.
Я учился прогать в Borland C++ Version 3, потом и за ПХП брался - кароче везде есть хорошая подсветка синтаксиса.

Сейчас VS 2005 поставил:
весь код обычный черный шрифт smile , хотелось бы как-нить по разнообразнее - но как?

PM MAIL ICQ   Вверх
Exception
Дата 16.12.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Aurus @ 16.12.2005, 20:21)
весь код обычный черный шрифт

ЭТО КАК???
Ты видно текстовый файл в нём редактируешь smile
PM   Вверх
Aurus
Дата 17.12.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.8.2005
Где: Новосибирск

Репутация: нет
Всего: 0



можно как то регулировать подсветку синксиса или нет?
PM MAIL ICQ   Вверх
Exception
Дата 17.12.2005, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



А чем она тебя не устраивает? Изменить ее можно через Options, но включена она всегда. Покажи скриншот, где у тебя не подсвечивается
PM   Вверх
Aurus
Дата 20.12.2005, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.8.2005
Где: Новосибирск

Репутация: нет
Всего: 0



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 и пр...
PM MAIL ICQ   Вверх
Exception
Дата 20.12.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Express Edition. Действительно, никакого Query Analizer я не нашел.. Ну да и не нужен мне 2005-й пока. А будет нужен -- лотки в метро рулят

Это сообщение отредактировал(а) Run-time error - 20.12.2005, 18:50
PM   Вверх
Coocky
Дата 20.12.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Есть МФС?
Не изменилось ли к лучшему? smile
Че смеетесь!?
А вдруг... smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Aurus
Дата 20.12.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 14.8.2005
Где: Новосибирск

Репутация: нет
Всего: 0



т.е. MS SQL Server 2005 Express Edition можно смело удалять и ставить 2000.
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.2483 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.