Visual Studio 2010

Перевод локализованных сообщений об ошибках на английский

Если вы пользуетесь локализованной версией Visual Studio, то вам может пригодиться сайт FindErr.net. В каталоге сайта можно найти локализованную версию ошибки и ее перевод на английский. На сайте есть 3 раздела по ошибкам: MS SQL Server, .NET Framework и Windows.

Просмотр эскизов

В IDE-редакторе при нажатии Ctrl+Tab вы можете перемещаться между открытыми активными файлами. При помощи небольшого трюка можно добавить эскизы файлов. Откройте редактор реестра и в разделе HKCU\Software\Microsoft\VisualStudio\10.0\General добавьте параметр DWORD ShowThumbnailsOnNavigation со значением 1. Перезапустите Visual Studio и вы увидите, что теперь появились эскизы. Интересно отметить, что данные эскизы были доступны в Visual Studio 2008 и Visual Studio 2010beta, но затем эту функциональность убрали.

Стандартное окно менеджера окон

Окно с просмотром эскизов

Примечание: большой сборник настроек реестра Windows вы можете найти в справочнике по реестру Windows.

Менеджер расширений VS 2010 и новое расширение PowerCommands

VS 2010 представляет более богатую по расширяемости модель, по сравнению с предыдущими версиями. Любой разработчик может создать расширение, которое может добавлять новый функционал, настраивать IDE Visual Studio 2010, редактор кода, систему проектов и ассоциированные дизайнеры. Читать далее о менеджере расширений

Шаблоны Visual Studio

В Visual Studio можно создавать или менять шаблоны проектов, классов, страниц, веб-сервисов и так далее. Изучив материал, вы сможете улучшить свой код. Читать далее о шаблонах...

Недавние проекты

Наконец-то в Visual Studio 2010 довели до ума работу с недавними проектами - не надо лезть в реестр. С помощью щелчков мышью можно удалить ненужные проекты, закрепить любимые проекты.

VS 2010: Улучшения в Intellisense

Блочное выделение и многострочное редактирование

Очень интересная и полезная новинка - многострочное редактирование. Выглядит следующим образом - удерживая клавишу Alt, выделите прямоугольную область, например, все вхождения слов public, и начинайте печатать слово private. Вы увидите, что редактирование происходит сразу на всех строчках.

Более подробнее об этом можно узнать из видео. Таким способом удобно менять область видимости переменных, комментировать, добавлять новые операторы.

image В сегодняшнем посте, я расскажу о небольшом, но очень удобном нововведении в intellisense у VS 2010, которое улучшает фильтр автодополнения типов и членов. Вы сможете более просто и эффективно работать с API при написании кода.

Работа Intellisense в VS 2008

Для того, чтобы правильно оценить нововведение intellisense в VS 2010, давайте выполним простой сценарий в VS 2008, где мы желаем написать простой код, который изменяет свойства GridView.

Мы начинаем печатать “GridView1.Edit”, чтобы увидеть список доступных Edit членов элемента управления. В VS 2008, intellisense показывает отфильтрованный список с элементами, которые начинаются со слова “Edit”

image

Отличный вариант, если нам нужен метод/свойство/событие, которое начинается с “Edit”. Но это плохо работает, если элемент объекта, который мы ищем, начинается с других слов (например: событие “RowEditing” или метод “SetEditRow()”). Нам приходится прокручивать список вверх, вниз, производя поиск нужного элемента, а то и открывая Object Browser или MSDN.

Работа Intellisense в VS 2010

Теперь попробуем проделать тот же сценарий в VS 2010. Когда мы набираем “GridView1.Edit” в VS 2010, то видим, что свойство EditIndex подсвечивается по умолчанию. Но, intellisense список отфильтровал и показал все элементы, которые содержат слово “Edit”.

image

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

Поиск ключевых слов

Данная новая возможность фильтрации в VS 2010 весьма полезна для поиска любого члена, не зависимо, с какого слова он начинается. К примеру, если мы желаем активировать постраничную навигации в datagrid, но не можем вспомнить, как это сделать. Достаточно написать “GridView1.Paging” и в появившемся списке будет отфильтрованы все элементы, которые содержат слово “Paging”. Обратите внимание, GridView фактически не содержит ни одного объекта, который начинается со слова “Paging”.

image

Поиск типов

Новая возможность фильтрации в VS 2010, которая позволяет быстро находить нужные классы и типы. Например, когда мы набираем тип “List” для объявления переменной, редактор автоматически отфильтрует и покажет все типы, который содержат в названии слово “List” (включая IList<> и SortedList<>, которые не начинаются на “List”).

image

Intellisense, основанный на Pascal Case

Правила именования .NET Framework определяют, что имена типов и членов основаны на “Pascal Cased” по умолчанию. Это означает, что каждое слово в типе или члене должно начинаться с заглавной буквы (например: PageIndexChanged).

Intellisense фильтрация в VS 2010 позволяет быстро искать и отфильтровывать объекты, названные по правилам именования паскаля. Например, если мы напечатаем “GridView1.PIC”, то VS 2010 отфильтрует и покажет все члены, которые содержат PIC в своем имени, а также члены, которые названы по “Pascal Cased”, у которых сегменты слова начинаются последовательно с данных букв:

image

Обратите внимание, что PIC выводит как “PageIndexChanged”, так и “PageIndexChanging”. Это избавляет нас от лишних нажатий клавиш для написания любого имени объекта.

Поиск и навигация по коду в VS 2010

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

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

Поиск и навигация в исходном коде ASP.NET MVC

Для данной статьи я буду использовать исходный код ASP.NET MVC фреймворка, у которого много тысяч строк кода, для демонстрации некоторых новых возможностей в поиске и навигации у VS 2010. Если у вас установлена VS 2010 Beta 2, вы можете загрузить ASP.NET MVC фреймворк.

image

Вы обнаружите, что производительность, ниже представленных возможностей, реально высокая, не смотря большой кусок кода в несколько тысяч строк. Все возможности, которые я опишу, уже интегрированы в VS 2010 и работают для всех проектов на C# или VB.

Поддержка “Navigate To”

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

Visual Studio 2010 теперь поддерживает новое горячее сочетание клавиш (Ctrl+запятая), при нажатии на которое открывается новое окно “Navigate To”, которое позволяет быстро находить типы, файлы, переменные и члены в вашем проекте и перемещаться к их объявлению.

image

Благодаря выдачи результатов по ходу ввода запроса, “Navigate To” дает прирост в поиске через UI:

image

Наберите еще несколько букв, и вы увидите автоматически отфильтрованный список, который соответствует запросу “controller”:

image

Вы можете использовать полосу прокрутки для перемещения по результату поиска или использовать альтернативу — нажимать Tab и далее пользоваться стрелочками, если не хотите отрывать руки от клавиатуры. Список “Navigate To” включает в себя все типы результатов, которые соответствуют поисковому запросу, включая имена типов, методов, свойств, файлов и объявление полей

image

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

image

Нечеткие возможности поиска

Поле поиска в “Navigate To” умеет делать хитрые вещи, оно позволяет смекалисто отфильтровывать и искать, не зная толком имени вещи, которую вы ищите. Это позволяет фильтровать ваши поиски и получать информацию в реальном времени, во время набора.

Чтобы опробовать данную возможность, давайте сначала будем искать слово “cache”. Обратите внимание, результат включает в себя не только элементы, которые начинаются со слова “cache”, но и любые элементы, которые содержат слово “cache”:

image

Мы можем добавлять несколько слов в поле поиска для дальнейшего отфильтровывания результатов. Например, ниже, я отфильтровываю список по элементам, которые содержат оба слова “cache” и “action” в имени:

image

Типы и члены в .NET Framework используют правило именования называемое “Pascal Casing”, которое означает, что первые буквы каждого слова в имени типа или члена должны быть заглавными. Окно “Navigate To” позволяет вам опционально использовать “Pascal Casing” соглашение для быстрого фильтрования типов. Достаточно написать заглавными первые буквы имен у типов/членов, и он автоматически отфильтрует результаты, которые соответствуют данному соглашению.

Например, написав “AMS” вы увидите результат ниже (только те типы и члены, которые содержат слова, которые начинаются с А, затем с M, потом с S):

image

Окно “Navigate To” позволяет вам быстро фильтровать и перемещаться по коду, используя минимум нажатий и избавляет вас от использования мышки, открытия Solution Explorer и нажатия непосредственно на файл.

View Call Hierarchy

Конечно иметь возможность быстрой навигации и поиска по коду — это замечательно, но иметь возможность просматривать, как используется код — это ведь еще лучше! VS 2010 представляет новую возможность — “View Call Hierarchy”, которая позволяет быстро обнаружить места в коде, с которых вызываются ваши методы или свойства и передвигаться по дереву вызовов, не запуская или отлаживая, при этом, приложение.

Для использования данной возможности, просто выделите имя метода или свойства в коде, нажмите Ctrl+K, Ctrl+T или правой кнопкой и выберите “View Call Hierarchy” с контекстного меню:

image

Это откроет новое окно инструмента “Call Hierarchy”, которое по умолчанию появляется под редактором кода. Ниже, вы можете увидеть, как “Call Hierarchy” отображает два метода в нашем проекте, которые вызывают метод ViewPage.RenderView(), выделенный выше.

image

Далее мы можем углубляться иерархию первого метода “RenderViewAndRestoreContentType”, чтобы увидеть очередь вызова:

image

Для виртуальных методов/свойств вы можете также можете вызывать окно иерархии, чтобы увидеть, что показывает подкласс и перегрузить их.

Двойное нажатие на любом члене в окне “Call Hierarchy” откроет соответствующий исходный файл и переместит в нужное место в коде.

image

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

Highlighted References

D VS 2010, когда вы выделяете или подсвечиваете переменные / параметры / объявление поля в редакторе кода, все места с ними автоматически подсвечиваются для вас в редакторе. Это позволяет легко определить, где и как переменная или параметр используется.

Например, когда мы выделяем в редакторе параметр “controllerContext”, передаваемый в метод ControllerActionInvoker.GetParameterValue() ниже, его четыре места использования в данном методе также подсвечиваются:

image

Если я выделю локальную переменную в методе, все места ее использования также автоматически подсветятся:

image

Если подсвечено несколько мест использования, вы можете перемещаться по ним, используя Ctrl-Shift- ↑ и Ctrl-Shift-↓

Что нового в базовых классах в .NET 4 Beta 2

Перевод What's New in the BCL in .NET 4 Beta 2 [Justin Van Patten]

Visual Studio 2010 и .NET Framework 4 Beta 2 уже доступны для загрузки. .NET 4 Beta 2 содержит некоторое количество нового функционала и улучшений в базовых классах (BCL) в дополнение к тем, которые мы представили ранее в .NET 4 Beta 1. Многие эти улучшения были произведены благодаря отзывам и рекомендациям от клиентов, полученным через Microsoft Connect.

Общий список улучшений в .NET 4 Beta 2

  • Тип Complex;
  • Location;
  • IObservable<T>;
  • Stream.CopyTo;
  • Guid.TryParse, Version.TryParse, and Enum.TryParse<T>;
  • Enum.HasFlag;
  • перегруженные String.Concat и String.Join принимают IEnumerable<T>;
  • String.IsNullOrWhiteSpace;
  • дополнения в Environment.SpecialFolder;
  • Environment.Is64BitProcess и Environment.Is64BitOperatingSystem;
  • поддержка параметров Path.Combine;
  • глобализация при форматировании и разборе TimeSpan;
  • Stopwatch.Restart
  • StringBuilder.Clear
  • дополнения в IntPtr и UIntPtr и операторы Subtraction;
  • ServiceProcessInstaller.DelayedAutoStart
  • тип ObservableCollection<T> перенесен в System.dll.

Тип Complex

прим. перев.: этот тип можно использовать подключив самостоятельно сборку System.Numerics.dll. Кроме того, еще немного информации можно почерпнуть в этой статье

Тип System.Numerics.Complex представляет собой комплексное число, включающее в себя значения вещественного числа и мнимого числа.  Complex поддерживает как декартовы координаты (вещественные и мнимые), так и полярные координаты (величина и период измеряются в радианах) и поддерживает арифметические и тригонометрические операции. Комплексные числа используются в ряде областей, включая высокопроизводительные вычисления, построениях графиков и диаграм, электронике (т.н. преобразования Фурье) и в других областях.

Location

System.Device.Location (который расположен в System.Device.dll) позволяет .NET-приложениям запущенным на Windows 7 определять текущую геолокацию (т.е. широту и долготу) устройства на котором приложение запущено. Windows 7 поддерживает ряд разнообразных датчиков местоположения, включая устройства GPS и радио WWAN (WWAN radios), и может автоматически переключаться между датчиками, когда они доступны, для получения наиболее точных данных в конкретной ситуации. .NET-приложения смогут использовать эти API для получения доступа к следующим данным: долгота, широта, высота, горизонтальная и вертикальная точность, направление, скорость и городской адрес (т.е. страну/регион, штат/область, город, почтовый индекс, улицу, номер дома, этаж). Учтите, что мы планируем внести некоторые изменения в структуру location-API в следующем выпуске .NET RC, так что имейте это в виду, когда соберетесь оценивать и использовать location-API beta 2 в своих приложениях. Мы расскажем побольше о запланированных изменениях в следующих статьях в этом блоге.

IObservable<T>

System.IObservable<T> и System.IObserver<T> реализуют основной механизм для push-уведомлений и могут исопльзоваться для создания push-коллекций или по-другому – наблюдаемых (observable) коллекций. Любой, кто знаком с паттернами, узнает в этих интерфейсах реализацию широкоизвестного паттерна наблюдатель (observer). IObservable<T> приоткрывает дверь для новых замечательных парадигм разработки на .NET основанных на событиях и асинхронном программировании. Отличный пример этому – Reactive Framework (RX), библиотека методов расширения (не входит в .NET 4), которая реализует операторы LINQ Standard Query Operators и другие полезные потокоизменяющие (stream transformation) функции  для IObservable<T>. События первого класса (first-class) F# [прим. перев.: больше о first-class событиях и чем они отличаются от событий .net можно почитать в этой заметке] так же поддерживают IObservable<T> и, кроме того, F# содержит библиотеку операторов для обозревателей  похожую на RX. Представьте себе возможность создавать LINQ-запросы к событиям, это как раз то, что IObservable<T> позволяет делать. Для закрепления знаний о силе IObservable<T> я рекомендую посмотреть серию видео Эрика Мейджера “Знакомство с RX” (Erik Meijer introducing RX) на Channel 9 и обсуждение discussing IObservable<T> in the BCL между Везом Дайером (Wes Dyer) и Ким Гамильтон (Kim Hamilton).

Вы могли подумать, что IObservable<T> приходит на замену событиям в .NET. Однако, ответ: “нет”, но вы и в самом деле можете использовать IObservable<T> вместо событий, если захотите. События – это хорошо известный механизм уведомлений в .NET и он очень отлично знаком .NET-разработчикам. Поэтому, мы рекомендуем продолжать использовтаь события как основной механизм уведомлений для .NET API. Одна из самых классных вещей в IObservable<T> – это то, что конвертация существующего события в IObservable<T> – простейший процесс. RX предосталяет для этого встроенные методы, а F# содержит встроенную поддержку на уровне языка. Оставайтесь с нашим блогом для большего количества новостей о RX в будущем.

Stream.CopyTo

Как часто вы писали следующий стеретипный код во время работы с типом Stream для чтения из одного потока и записи в другой?

Stream source = ...;

Stream destination = ...;

byte[] buffer = new byte[4096];

int read;

while ((read = source.Read(buffer, 0, buffer.Length)) != 0) {

destination.Write(buffer, 0, read);

}


		

В .NET 4 вам больше не придется писать такой код. Мы добавили для Stream новый метод CopyTo, который позволит написать так:

Stream source = ...;
Stream destination = ...;
source.CopyTo(destination);

Guid.TryParse, Version.TryParse, and Enum.TryParse<T>

Мы добавили метод TryParse в System.Guid, System.Version, и System.Enum. Enum.TryParse – это генерик (обобщение), приятное улучшение по сравнению с необобщенным методом Parse, которое позволяет писать более чистый код.

В предыдущих версиях .NET, чтобы распарсить значение перечисления, мы могли писать что-то вроде этого:

try {
    string value = Console.ReadLine();
    FileOptions fo = (FileOptions)Enum.Parse(typeof(FileOptions), value);
   
// Success
}
catch {
   
// Error
}

В .NET 4 вы можете использовать обощенный метод TryParse:

string value = Console.ReadLine();
FileOptions fo;
if (Enum.TryParse(value, out fo))
{
   
// Success
}

Прим. перев.: здесь могло бы быть Enum.TryParse<FileOptions>(value, out fo), но C# великолепный язык, компилятор которого сам все понимает

Enum.HasFlag

Мы добавили новые удобные для использования методы в System.Enum, которые позволяет супер-просто определить установлен ли флаг в перечислении Flags без нужды вспоминать битовые операторы. Это так же помогает делать код более читаемым.

В VB:

Dim cm As ConsoleModifiers = ConsoleModifiers.Alt Or ConsoleModifiers.Shift
Dim hasAlt1 As Boolean = (cm And ConsoleModifiers.Alt) = ConsoleModifiers.Alt ' using bitwise operators
Dim hasAlt2 As Boolean = cm.HasFlag(ConsoleModifiers.Alt) ' using HasFlag

В C#:

ConsoleModifiers cm = ConsoleModifiers.Alt | ConsoleModifiers.Shift;

bool hasAlt1 = (cm & ConsoleModifiers.Alt) == ConsoleModifiers.Alt; // using bitwise operators

bool hasAlt2 = cm.HasFlag(ConsoleModifiers.Alt); // using HasFlag


		

Перегруженные String.Concat и String.Join принимают IEnumerable<T>

Мы добавили новые перегруженные версии String.Concat и String.Join, которые принимают, в дополнение к существующим перегруженным методам, которые принимают массивы. Это означает, что вы можете передавать любую коллекцию, которая реализует IEnumerable<T> в эти API без лишней конвертации коллекции в массив. Мы так же добавили поддержку params в существующий перегруженный метод  String.Join основанный на массиве, который теперь позволяет вам писать более короткий код.

String.Join(", ", new string[] { "A", "B", "C", "D" }); // you used to have to write this
String.Join(", ", "A", "B", "C", "D"); // now you can write this

String.IsNullOrWhiteSpace

Этот новый удобный метод похож на существующий метод IsNullOrEmpty, но в дополнение к проверке строки на null или пустое значение, он так же проверяет строку на то, содержит ли она одни только пробелы (точнее, символ определенный в Char.IsWhiteSpace). Этот метод может быть полезен при работе с контрактами кода.

Дополнения в Environment.SpecialFolder

Мы добавили несколько новых значений в перечисление Environment.SpecialFolder:

  • AdminTools
  • CDBurning
  • CommonAdminTools
  • CommonDesktopDirectory
  • CommonDocuments
  • CommonMusic
  • CommonOemLinks
  • CommonPictures
  • CommonProgramFilesX86
  • CommonPrograms
  • CommonStartMenu
  • CommonStartup
  • CommonTemplates
  • CommonVideos
  • Fonts
  • LocalizedResources
  • MyVideos
  • NetworkShortcuts
  • PrinterShortcuts
  • ProgramFilesX86
  • Resources
  • SystemX86
  • Templates
  • UserProfile
  • Windows

Кроме того, мы добавили новый перегруженный вариант метода Environment.GetFolderPath, который принимает перечисление SpecialFolderOption, позволяющее указать некоторые дополнительные опции, такие как “Create” (чтобы создать директорию, если она не существует) и “DoNotVerify” (для быстрого возврата пути без проверки на существование, что полезно когда директория является расшаренным в сети ресурсом).

Environment.Is64BitProcess и Environment.Is64BitOperatingSystem

Эти новые полезные API упрощают определение битности (bitness) текущего процесса и операционной системы. Environment.Is64BitProcess – это эквивалент вызову IntPtr.Size == 8. Environment.Is64BitOperatingSystem сообщит вам является текущая операционная системы 64-битной. Имейте в виду, что Environment.Is64BitProcess может вернуть false, а Environment.Is64BitOperatingSystem – true в 32-битном процессе запущенном на 64-битной системе под WOW64.

Поддержка параметров Path.Combine

Вы когда-нибудь делали вложенные вызовы Path.Combine вроде этих:

Path.Combine(

"dir1", Path.Combine("dir2", Path.Combine("dir3", "dir4")));

С .NET 4.0 вы можете написать это проще:

Path.Combine(

"dir1", "dir2", "dir3", "dir4");

Глобализация при парсинге и форматировании TimeSpan

В предыдущих версиях .NET тип TimeSpan поддерживался только для единственного культуро-независимого формата при форматировании и парсинге. Это означало, что когда вы вызывали ToString на французской машине вывод не совпадал с культурными настройками, что делало приложение неглобализованным. Чаще всего эта проблема возникала при отображении результатов из баз данных SQL, которые были представлены в широкоиспользуемом типе колонки Time. Это происходит потому, что Time из SQL отображается в тип TimeSpan в .NET. Например:

Thread.CurrentThread.CurrentCulture =

new CultureInfo("fr-FR");
Console.WriteLine(new TimeSpan(0, 1, 1, 1, 1
));
Console.WriteLine(12.34);

Выходные данные:

01:01:01.0010000
12,34

Выходные данные от TimeSpan.ToString находятся в культуро-независимым формате, так что на выходе исопльзуется '.' (точка) как разделитель для десятичных типов, тогда как Double использует ',' (запятая) основываясь на текущих настройках культуры.

В .NET 4 System.TimeSpan теперь поддерживает форматирование и парсинг основанный на установках культуры через новые перегруженные методы ToString, Parse и TryParse, а так же новые методы ParseExact и TryParseExact. Поведение ToString по умолчанию останется предыдущим и для обратной совместимости будет выводить результаты в старом виде. Новые пергруженные методы позволят вам указывать формат в зависимости от культуры. Вы можете передать “g”-формат (general format) для того, чтобы новый перегруженный вариант ToString использовал культуро-чувствительный формат:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
Console.WriteLine(new TimeSpan(0, 1, 1, 1, 1).ToString("g"));
Console.WriteLine(12.34);

Выходные данные:

01:01:01,0010000
12,34

С этим новым форматом, выходные данные результатов TimeSpan совпадают с пользовательскими культурными настройками.

Stopwatch.Restart

Это новый полезный метод – эквивалент вызова Stopwatch.Reset с последующим Stopwatch.Start.

StringBuilder.Clear

В предыдущих версиях .NET вы могли очистить StringBuilder установив значение свойства Length в ноль. Это не совсем очевидно, поэтому мы добавили StringBuilder.Clear как более очевидный вариант.

IntPtr и UIntPtr и операторы Addition и Subtraction

Добавление смещения для IntPtr или UIntPtr могло привести к ошибкам и, елси не было произведено корректно, часто было источником изощренных багов на 64-битных машинах. .NET 4 влючает операции дополнения и уменьшения для этих типов с методами Add и Subtract, для предотвращения такого типа ошибок.

ServiceProcessInstaller.DelayedAutoStart

Сервисы основанные на .NET, которые запускаются автоматически, теперь могут устанавливать новое свойство DelayedAutoStart в true (рекомендуется), которое позволяет задержать старт сервиса пока загружаются остальные сервисы плюс установить коротку паузу для улучшения производительности загрузки системы при запуске на Vista и выше.

Тип ObservableCollection<T> перенесен в System.dll

Мы перенесли типы System.Collections.ObjectModel.ObservableCollection<T>, System.Collections.ObjectModel.ReadOnlyObservableCollection<T> и System.Collections.Specialized.INotifyCollectionChanged из WindowsBase.dll (WPF-сборка) в System.dll. Это позволит вам использовать эти типы без зависимости от сборок WPF и улучшит разделение между моделью и представлением.

Мы надеемся, что вам понравятся те нововведения, которые мы сделали в BCL в .NET 4 Beta 2. Скачивайте Visual Studio 2010 и .NET 4 Beta 2 сегодня. Дайте нам знать, что вы думаете о этих вещах и сообщайте о багах.

От переводчика:

Это был перевод статьи о нововведениях в .NET 4.0 Beta 2 по сравнению с Beta 1. Для того, чтобы ознакомится с новыми вещами, которые были добавлены в .NET 4 еще во время версий Beta 1 и CTP обратитесь к этой статье. Здесь я приведу только общий список нововведений:

  • Контракты кода (Code Contracts)
  • Параллельные расширения (Parallel Extensions)
  • BigInteger
  • Вариантные аннотации (Variance annotations)
  • Кортежи (Tuples)
  • SortedSet<T>
  • Улучшения в File System Enumeration
  • Отображаемые в памяти файлы (MemoryMappedFiles)
  • Улучшения в функцицонале по работе с реестром
  • Данные глобализации обновлены согласно Unicode 5.1
  • Улучшения в ResourceManager
  • Улучшения в классах сжатия

Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview

Вышла новая версия обучающих материалов по Visual Studio 2010. Список материалов доступен на сайте http://www.managed-world.com/archive/2009/10/20/visual-studio-2010-beta-2-training-kit-published.aspx

Скачать пакет можно по адресу http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=752cb725-969b-4732-a383-ed5740f02e93

Реклама

Справочник - коды оквэд : производство машин.;Настенные котлы buderus logamax. Трубы rehau, 6b2a, kermi, котлы buderus, buderus .;Строительство, ремонт, материалы - запчасти jazz .