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. Вы увидите, что редактирование происходит сразу на всех строчках.
Более подробнее об этом можно узнать из . Таким способом удобно менять область видимости переменных, комментировать, добавлять новые операторы.
В сегодняшнем посте, я расскажу о небольшом, но очень удобном
нововведении в intellisense у VS 2010, которое улучшает фильтр
автодополнения типов и членов. Вы сможете более просто и эффективно
работать с API при написании кода.
Работа Intellisense в VS 2008
Для того, чтобы правильно оценить нововведение intellisense в VS 2010,
давайте выполним простой сценарий в VS 2008, где мы желаем написать
простой код, который изменяет свойства GridView.
Мы начинаем печатать “GridView1.Edit”, чтобы увидеть список доступных
Edit членов элемента управления. В VS 2008, intellisense показывает
отфильтрованный список с элементами, которые начинаются со слова “Edit”

Отличный вариант, если нам нужен метод/свойство/событие, которое начинается с “Edit”. Но это плохо работает, если элемент объекта, который мы ищем, начинается с других слов (например: событие “RowEditing” или метод “SetEditRow()”). Нам приходится прокручивать список вверх, вниз, производя поиск нужного элемента, а то и открывая Object Browser или MSDN.
Работа Intellisense в VS 2010
Теперь попробуем проделать тот же сценарий в VS 2010. Когда мы набираем
“GridView1.Edit” в VS 2010, то видим, что свойство EditIndex
подсвечивается по умолчанию. Но, intellisense список отфильтровал и
показал все элементы, которые содержат слово “Edit”.
![]()
Данное нововведение позволяет более быстро найти нужный метод/свойство/событие отвечающий за изменение объекта.
Поиск ключевых слов
Данная новая возможность фильтрации в VS 2010 весьма полезна для поиска
любого члена, не зависимо, с какого слова он начинается. К примеру, если
мы желаем активировать постраничную навигации в datagrid, но не можем
вспомнить, как это сделать. Достаточно написать “GridView1.Paging” и в
появившемся списке будет отфильтрованы все элементы, которые содержат
слово “Paging”. Обратите внимание, GridView фактически не содержит ни
одного объекта, который начинается со слова “Paging”.
![]()
Поиск типов
Новая возможность фильтрации в VS 2010, которая позволяет быстро
находить нужные классы и типы. Например, когда мы набираем тип “List”
для объявления переменной, редактор автоматически отфильтрует и покажет
все типы, который содержат в названии слово “List” (включая IList<> и
SortedList<>, которые не начинаются на “List”).
![]()
Intellisense, основанный на Pascal Case
Правила именования .NET Framework определяют, что имена типов и членов
основаны на “Pascal Cased” по умолчанию. Это означает, что каждое слово
в типе или члене должно начинаться с заглавной буквы (например: PageIndexChanged).
Intellisense фильтрация в VS 2010 позволяет быстро искать и
отфильтровывать объекты, названные по правилам именования паскаля.
Например, если мы напечатаем “GridView1.PIC”, то VS 2010 отфильтрует и
покажет все члены, которые содержат PIC в своем имени, а также члены,
которые названы по “Pascal Cased”, у которых сегменты слова начинаются
последовательно с данных букв:

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

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

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

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

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

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

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

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

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

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

Окно “Navigate To” позволяет вам быстро фильтровать и перемещаться по коду, используя минимум нажатий и избавляет вас от использования мышки, открытия Solution Explorer и нажатия непосредственно на файл.
View Call Hierarchy
Конечно иметь возможность быстрой навигации и поиска по коду — это замечательно, но иметь возможность просматривать, как используется код — это ведь еще лучше! VS 2010 представляет новую возможность — “View Call Hierarchy”, которая позволяет быстро обнаружить места в коде, с которых вызываются ваши методы или свойства и передвигаться по дереву вызовов, не запуская или отлаживая, при этом, приложение.
Для использования данной возможности, просто выделите имя метода или свойства в коде, нажмите Ctrl+K, Ctrl+T или правой кнопкой и выберите “View Call Hierarchy” с контекстного меню:

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

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

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

Это позволит вам быстро перемещаться по коду и лучше понимать отношения между классами и методами во время работы.
Highlighted References
D VS 2010, когда вы выделяете или подсвечиваете переменные / параметры / объявление поля в редакторе кода, все места с ними автоматически подсвечиваются для вас в редакторе. Это позволяет легко определить, где и как переменная или параметр используется.
Например, когда мы выделяем в редакторе параметр “controllerContext”, передаваемый в метод ControllerActionInvoker.GetParameterValue() ниже, его четыре места использования в данном методе также подсвечиваются:

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

Если подсвечено несколько мест использования, вы можете перемещаться по ним, используя Ctrl-Shift- ↑ и Ctrl-Shift-↓
Что нового в базовых классах в .NET 4 Beta 2
Перевод
Visual Studio 2010 и .NET Framework 4 Beta 2 уже доступны для . .NET 4 Beta 2 содержит некоторое количество нового функционала и улучшений в базовых классах (BCL) в дополнение к тем, которые мы представили ранее в . Многие эти улучшения были произведены благодаря отзывам и рекомендациям от клиентов, полученным через .
Общий список улучшений в .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 основанных на событиях и асинхронном программировании. Отличный пример этому – (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 ) на Channel 9 и обсуждение между Везом Дайером (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-битной системе под .
Поддержка параметров 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. сегодня. Дайте .
От переводчика:
Это был перевод статьи о нововведениях в .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. Список материалов доступен на сайте
Скачать пакет можно по адресу
Реклама
Справочник - коды оквэд : производство машин.;Настенные котлы buderus logamax. Трубы rehau, 6b2a, kermi, котлы buderus, buderus .;Строительство, ремонт, материалы - запчасти jazz .
