|
|
-
В след за выходом очередных версий студии и фреймворка вышли обучающие материалы по данным технологиям. Скачать можно щелкнув по этой ссылке. В состав обучающих материалов входят презентации, лабораторные работы, демонстрационные примеры на следующую тематику: - C# 4.0
- Visual Basic 10
- F#
- Parallel Extensions
- Windows Communication Foundation
- Windows Workflow
- Windows Presentation Foundation
- ASP.NET 4
- Windows 7
- Entity Framework
- ADO.NET Data Services
- Managed Extensibility Framework
- Visual Studio Team System
К тому же на потрале Channel 9 в разделе обучений http://channel9.msdn.com/learn/ появилось 2 онлайн тренинг-курса 1) Visual Studio 2010 and .NET Framework 4 Training Course2) Windows 7 Online TrainingВсем приятного изучения новых технологий. Ссылки по материалу:
|
-
Вчера в блоге журналиста Microsoft Mary-Jo Foley появилась запись о том, что инструмент Popfly закрывается. А сегодня я получил вот такое письмо от команды Popfly:
I’m writing to thank you for registering and using Microsoft Popfly.
I’ve been fortunate enough to see all the innovative mashups, Web
pages, and games created by the Popfly community since we launched
Popfly two years ago. It has truly been a pleasure to watch the spirit
of creativity flow through a growing Popfly community over the life of
the product.
It’s
with a heavy heart that I share some news with you today: on August 24,
2009, the Popfly service will be discontinued and all sites,
references, and resources will be taken down.
Так что, если у вас есть какие-либо наработки, используя этот
инструмент, будьте готовы, что 24 августа этого года они перестанут
работать. Microsoft пока не называет официальных причин, но есть мнение что это делается из-за экономических проблем.
А также предгается переключиться на следующие ресурсы: Microsoft Web Platform Installer, Microsoft XNA, Microsoft Kodu, Microsoft Express.
Ссылки по материалу:
http://www.popfly.com/Блог команды PopflyБлог Mary-Jo FoleyБлог Todd Bishop
|
-
Да, это так! Ранее уже сообщалось о том, что 28 октября нас ожидает русскоязычная версия этого продукта. И ОНИ сдержали свое слово. Сейчас для всех желающих доступен обновленный выпуск библиотеки MSDN. В этот выпуск включены следующие обновленные наборы содержимого: - Документация Visual Studio 2008
- Документация для разработчиков Windows Vista
- Документация по набору драйверов Windows (WDK)
- Документация по Microsoft Office 2007
- База знаний Майкрософт
- И многое другое.
Прочитать описание продукта и скачать его можно пройдя по этой ссылке. Также можно воспользоваться прямой ссылкой на закачку. Русскую версию можно поставить параллельно с английской. Они абсолютно не конфликтуют. Кого заинтересовало - дерзайте!
|
-
Еще весной, когда такой продукт как StyleCop увидел этот мир, появилось множество обсуждений о том зачем он нужен, как его использовать и т.п. В то же время Howard van Rooijen в своем блоге написал, что было бы очень хорошо, если скрестить StyleCop и ReSharper. Тогда разработчик видел бы ошибки прямо во время написания кода, без необходимости вручную запускать механизм анализа кода. Причем, непосредственно проблемный участок подсвечивался бы и всплывала подсказка с указанием причины проблемы. При этом Howard пообещал попробывать сделать такой плагин для ReSharper'a и если у него получится, он выложит это на Codeplex'e. И у него это получилось. Недавно на портале Codeplex стал доступен плагин StyleCop для ReSharper. Давайте посмотрим как это выглядит. Текущая версия плагина - 0.0.14137. Для того, чтобы ей воспользоваться, необходимо, иметь установленные StyleCop v4.3 и ReSharper v4.1. После уставки плагина необходимо зайти в меню Resharper -> Plugins... и убедиться, что выбран чекбокс напротив "Microsoft StyleCop For ReSharper 4.1": Теперь, открыв любой проект, у нас непосредственно в Real-Time будут подсвечиваться "тухлые" места по мнению StyleCop. Единственное, что может напугать или как-то раздражать, так это то, что будет подчеркнута красным цветом почти каждая строчка вашего кода, если она попадает под какое-то правило. В отличие от стандарного механизма анализа кода, который свои рекомендации выводит в окно "Error List" в закладку "Warnings". И вы сами решаете следовать вам этому правилу или нет. Хотя, если вы заядлый фанат StyleCop, то возможно вам и понравится такой способ указания на ошибки. С другой стороны, можно отключить ненужные правила в настройках StyleCop и они перестанут подсвечиваться плагином, либо можно отключить плагин, и включать по мере надобности. Это уже кому как удобно. Напоследок, хочу сказать, что все это стало возможно благодаря SDK к StyleCop, которое стало доступно начиная с версии 4.3 о чем неоднократно упоминалось здесь и здесь. P.S. Картинки любезно позаимствованы с домашней страницы плагина. Ссылки по материалу:
|
-
На сайте семинаров TechDays.ru появился
интересный
доклад Виталия Зайко на тему локализации Visual Studio 2008 и MSDN. Виталий
рассказывает, что очень скоро нас ожидают русские версии этих продуктов. Лично
меня очень обрадовала эта новость касательно библиотеки MSDN. Большинство
программистов и так непхоло читают на английском, но русская версия позволит
быстрее прочитать и понять суть искомой задачи.
Как утверждает докладчик, локализованные версии Visual Studio и MSDN станут
доступны 28 октября этого года.
Кому интересно, те могут посмотреть доклад по адресу: http://www.techdays.ru/Lecture.aspx?LID=fde4ba9d-f02e-470d-b6a2-f69cc4386bb2
В нем рассказывается об особенностях локализации, затраченных ресурсах и как
все это можно будет скачать. А также продеменострирована работа в русских
версиях данных продуктов.
|
-
Все знают о такой замечательной возможности как "Multi-Targeting", которая появилась в Visual Studio 2008. С ее помощью мы можем указать версию фреймворка на котором хотим разрабатывать наше приложение. Однако, в таком случае могут возникнуть проблемы.
Допустим, мы создаем приложение и указываем, что будет использоваться .NET Framework 2.0.
Для примера воспользуемся экземпляром класса DateTimeOffset:
DateTimeOffset dt = new DateTimeOffset();
В MSDN можно увидеть, что этот класс доступен начиная с версии .NET Framework 2.0 Sp1:
Но мы ведь указали целевой фрейморк 2.0, а компилятор спокойно компилирует код в котором используется класс из Sp1. Получается, что если мы запустим наше приложение на машине, где стоит .NET Framework 2.0 без Sp1, то наша программа не будет работать.
Как раз чтобы предупредить разработчиков о такой ситуации было разработано Multi-Targeting правило для FxCop и студийного Code Analysis. В студии это правило появилось вместе с первым сервис-паком. А в FxCop оно вошло в новую версию 1.36, о выходе которой я упоминал в своем предыдущем посте.
Для того, чтобы включить это правило в Visual Studio необходимо зайти в настройки Code Analysis в свойствах проекта. Далее нужно развернуть узел "Portability Rules" и убедиться, что выбрана опция "Use only API from targeted framework":
Теперь если мы запустим утилиту Code Analysis на выполнение, мы получим предупреждение о том, класс DateTimeOffset является частью .NET Framework 2.0 Sp1 и возникнут проблемы при запуске приложения на фреймворке без сервис-пака:
Если вы пользуетесь FxCop'ом, то там также необходимо убедиться, что выбрано правило "Use only API from targeted framework":
Также в свойствах проекта (Project -> Options) на закладке Spelling & Analys необходимо удостовериться, что выбран необходимый фреймворк:
Запустив сборку на анализ мы увидим аналогичное предупреждение:
Разработчики FxCop и Code Analysis настоятельно рекомендуют использовать это правило если ваше приложение должно работать на различных версиях .NET Framework.
...по материалам блога Дейва Кина.
|
-
Как я уже писал в одном из своих предыдущих постов, стал доступен очередной релиз StyleCop.
Обновление включает:
- Различные фиксы, включая задачи интеграции c Visual Studio
- Документация с правилами теперь включена и интегрирована в Visual Studio в меню "Show Error Help"
- Добавлены новые правила
- Бренд Source Analisys сменился на StyleCop
Также меня порадовало то, что теперь StyleCop работает с веб-проектами, созданными как Web Site. Напомню, что ранее StyleCop проверял только те веб-приложения, которые создавались как Web Application.
Ниже приведен небольшой список новых правил, вошедших в StyleCop 4.3:
- Требование сортировать директивы using
- Требование использовать встроенные алиасы типов для int, string, float и т.д.
- Требование стандартного текстового описания для конструкторов и деструкторов
- Требование использовать String.Empty вместо ""
- Запрет использования регионов внутри тела методов
- Запрет использования регионов вообще (данное правило по-умолчанию выключено)
- Запрет использования пустого статического конструктора
- Запрет ненужных или пустых блоков try\catch\finally
Кроме этого, как и обещалось ранее, стал доступен SDK для StyleCop. В котором объясняется:
- как создавать и устанавливать собственные StyleCop-правила
- как интегрировать кастомные настройки в диалог настроек StyleCop'а
- а также описано как интегрировать StyleCop в произвольную среду для сборки кода
Напомню, что StyleCop не является официальным продуктом Microsoft, так что используйте SDK на свой страх и риск :-)
Скачать все это можно пройдя по этой ссылке.
Также ниже приведены прямые ссылки на закачку:
|
-
Сегодня вышло много обновлений касательно продуктов Microsoft. Спешу сообщить, что не остался в стороне и Training Kit для VS2008 SP1 и .NET 3.5 SP1. В состав которого вошли учебные материалы, презентации, лабораторные работы по использованию VS2008 и .NET 3.5 именно SP1. Ниже приведены названия тем, обсуждаемых в данном учебном наборе: - .NET 3.5 SP1
- ADO.NET Data Services
- ASP.NET MVC
- ASP.NET Dynamic Data
- ADO.NET Entity Framework
- ASP.NET AJAX 3.5 SP1
- ASP.NET Routing
- WCF 3.5 SP1
- Visual Studio 2008 SP1
Для полноценной работы с Training Kit необходимо наличие следующих компонент: Скачать Training Kit можно щелкнув по этой ссылке.
|
-
На кодеплексе есть такой проект как WCF Security Guidance Project, о котором уже сообщалось ранее в блоге Сергея Лутая. Данный проект состоит из набора обучающего видео, вопросов и ответов, практических рекомендаций, и т.п. по защите распределенных приложений, построенных на базе технологии WCF. Спешу сообщить, что команда Microsoft Patterns & Practices совместно с командой вышеуказанного проекта выпустили первый релиз WCF Security Guide - руководства по обеспечению безопасности приложений, использующих технологию WCF. Руководство состоит из 4-х разделов: - Основы безопасности Web Service'ов;
- Основы безопасности WCF;
- Сценарии внедрения WCF в Intranet-приложения;
- Сценарии внедрения WCF в Internet-приложения;
Также в руководство вошли все наработки WCF Security Guidance Project: How To, Q&A, Guidelines, практики применения. В руководство не вошли видео-ресурсы, видимо по причине того, что руководство является книгой в формате PDF. Возможно, кого-то огорчит, что книга на английском языке, но текст не сложный и с картинками .
Скачать руководство можно со странички авторов. Также можно щелкнуть по этой ссылке и подтвердить свои намерения.
|
-
Команда разработчиков Windows Live выпустила июльский CTP релиз Windows Live Tools для Visual Studio. Этот набор из 6-ти компонент позволит вам внедрить Live-функциональность в ваш ASP.NET сайт. В релиз вошли такие компоненты:
- Map Control - позволяет внедрить на сайт карты Microsoft Virtual Earth.
- Contacts Control - позволяет внедрить на сайт функциональность Windows Live Contacts.
- IDLoginStatus Control - позволяет быстро обеспечить ваш сайт аутентификацией Windows Live. Достаточно просто перетянуть контрол и указать Application ID.
- IDLoginView Control - расширяет функциональность ASP.NET контрола LoginView, добавляя к нему аутентификацию Windows Live. Также позволяет ассоциировать Windows Live ID с MemberShip профайлом.
- MessengerChat Control - позволяет прямо из вашего сайта показывать состояние пользоватей в Windows Live Messеnger, а также обмениваться с ними сообщениями.
- SilverlightStreamingMediaPlayer Control - расширяет контрол Silverlight Media Player, позволяя проигрывать контент с вашего Silverlight Streaming аккаунта.
Требования для использования Windows Live Tools (согласно документации):
- Операционная система: Windows XP SP2 или Vista, хотя я без проблем установил на Windows 2003 R2;
- Visual Studio 2008 или Visual Web Developer Express 2008;
- ASP.NET 3.5;
- Silverlight 2.0 Beta 2 Tools для Visual Studio 2008
Ссылки на документацию есть на портале разработчиков Windows Live Tools http://dev.live.com/tools/. На данный момент нет документации только по Map Contol'у, но зато на портале Channel 9 есть видео по его использованию. Cкачать набор компонент можно пройдя по ссылке
|
-
В последнее время появилось достаточно много путаницы вокруг такого продукта от Microsoft как StyleCop. Он появился относительно недавно и был представлен как инструмент анализа кода. В сообществе VSTS было очень много шума о том, как новый инструмент связан с FXCop и встроенной в студию утилитой Code Analysis. Спрашивается зачем создавать еще один инструмент, делающий то же самое? По словам команды разработчиков VSTS продукт StyleCop разработан программистом из другого подразделения Microsoft. Имя этого человека Jason Allor. Он и его команда создали инструмент, который в чем-то повторяет FxCop и Code Analysis. Но в то же время делает вещи, которым вышеупомянутые утилиты не уделяют внимания. StyleCop является инструментом, контролирующим стиль кодирования, проверяющим форматирование кода. А также следит за тем, чтобы исходный код соответствовал соглашениям о стиле кодирования. StyleCop в отличие от FxCop не делает глубокого анализа, такого как проверка на безопасность, наличие корректных обработок "узких" мест и т.п. Еще одним важным отличием является то, что FXCop работает со статическим кодом, т.е. с готовой сборкой, в то время как StyleCop работает над кодом, который вы пишете в текущий момент. Разработчики данной утилиты предупреждают, что это продукт не Microsoft и даже не Team System Power Tool. Этот инструмент разрабатывался страстным программистом из Microsoft по вечерам и выходным. StyleCop не имеет полноценной службы поддержки, обслуживания и сопутствующих услуг по выше указанной причине (т.к. на разработку уходит всего лишь свободное время программиста). Подводя итог, приведу выдержку из блога команды разработчиков StyleCop: - StyleCop ‒ не часть VS Code Anasysis и даже была разработана не командой разработчиков VS. Утилита основное внимание уделяет проверке и контролю соблюдения правил стиля кодирования. Для того, чтобы убрать некоторые путаницы, мы уходим от имени, "Source Analysis" и будем обращаться к инструменту с этого времени как StyleCop, что является оригинальным названием инструмента!
- Мы планируем выпустить обновление, которое будет включать изменение имени, и исправление ошибок, обнаруженных сообществом после первого релиза. Этот выпуск будет также включать часть новых правил, которые не вошли в первый выпуск, а также другие предложения от сообщества.
- Мы выпустим небольшой SDK для инструмента, с описаниями интерфейсов расширяемости для создания собственных наборов правил. Также в SDK будут включены объяснения того, как использовать инструмент в различных утилитах, предназначенных для сборки кода.
- Мы выпустим документацию, описывающую все правила по умолчанию.
| Статья написана по материалам блога Brian Harry - ведущего технического сотрудника команды VS TFS
|
-
На портале Codeplex появилась заметка о том, что стал доступен первый превью новых AJAX возможностей для ASP.NET.
Этот превью содержит обзор реализации для следующих возможностей:
- Client-side template rendering
- Declarative instantiation of behaviors and controls
- DataView control
- Markup extensions
- Bindings
Скачать превью можно по ссылке: http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=15511
Joe Stagner в своем блоге написал, что начинает работу над созданием обучающих видео по новым возможностям ASP.NET AJAX.
Дополнительную информацию о развитии ASP.NET AJAX можно получить посмотрев Roadmap для данной технологии.
|
-
Данная статья будет полезна тем, кто сталкивался или, возможно, столкнется с такой ошибкой как PathToLongException, которая появляется когда мы выполняем какие-то операции над файлом, путь к которому очень длинный: [PathTooLongException]: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. | Со своей стороны мы могли бы сказать заказчикам, что не получается сохранить файл с таким названием, т.к. это ограничение системы. Но наши заказчики, увидев данное сообщение, скорее всего скажут: "260 символов? Это же смешно! Увеличьте ограничение!" .NET API очень сильно завязан на Windows API, поетому может показаться, что данную проблему не решить, т.к. сама Windows не дает оперировать с путями к файлам более 260 символов. Однако, Windows API все же предоставляет нам методы для обхода данного ограничения. Если перед путем к файлу поставить префикс "\\?\" и вызвать Unicode-версию функции Windows API, то можно использовать пути к файлам длиной до 32K символов. Сейчас мы рассмотрим как работать с файлами, путь к которым более 260 символов, а потом поговорим о возможных проблемах и ограничениях. Работа с длинными путями к файлам Для примера создадим консольное приложение. Нам понадобятся такие пространства имен: using System; using System.IO; using System.Text; | Далее создадим две функции: для записи и чтения файла: Функция WriteFile сохраняет файл с заданным именем и записывает в него информацию о количестве символов в его названии: static void WriteFile(string fileName) { using (FileStream fs = new FileStream(fileName, FileMode.Create)) { string text = string.Format("FileName Length: {0} symbols", fileName.Length); byte[] bytes = Encoding.Default.GetBytes(text); fs.Write(bytes, 0, bytes.Length); } } | Функция ReadFile читает и выводит на консоль содержимое файла: static void ReadFile(string fileName) { using (FileStream fs = new FileStream(fileName, FileMode.Open)) { int c; while (fs.Position < fs.Length) { c = fs.ReadByte(); Console.Write((char)c); } } } | В методе Main() попробуем вызвать эти функции: static void Main(string[] args) { // имя файла 250 символов string fileName = @"C:\very_long_file_name_" + "0000003000000000400000000050000000006" + "0000000007000000000800000000090000000" + "1000000000001000000000200000000030000" + "0000040000000005000000000600000000070" + "0000000080000000009000000020000000000" + "010000000002000000000300000000040000000005"; Console.WriteLine("Write file..."); WriteFile(fileName); Console.WriteLine("Read file:"); ReadFile(fileName); Console.Read(); } | Запустим программу на выполнение и проверим, что все хорошо работает:
Теперь модифицирум метод Main(): создадим на диске C: директорию с названием "very_long_file_name_in_this_directory" и немного изменим переменную, которая хранит имя файла. Сейчас путь к файлу будет состоять из 288 символов: static void Main(string[] args) { string directoryName = @"C:\very_long_file_name_in_this_directory"; if (! Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } // имя файла 288 символов string fileName = directoryName + @"\very_long_file_name_" + "0000003000000000400000000050000000006" + "0000000007000000000800000000090000000" + "1000000000001000000000200000000030000" + "0000040000000005000000000600000000070" + "0000000080000000009000000020000000000" + "010000000002000000000300000000040000000005"; Console.WriteLine("Write file..."); WriteFile(fileName); Console.WriteLine("Read file:"); ReadFile(fileName); Console.Read(); } | Запустив приложение на выполнение, мы получим сообщение об ошибке: [PathTooLongException]: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. | Для решения данной проблемы мы воспользуемся Win32 API функкцией CreateFile. Для начала добавим два пространства имен: using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; | Далее добавим вспомогательные перечислители и битовые флаги (для того, чтобы не передавать в параметры метода непонятные числовые значения): [Flags] public enum EFileAccess : uint { GenericRead = 0x80000000, GenericWrite = 0x40000000, GenericExecute = 0x20000000, GenericAll = 0x10000000, } [Flags] public enum EFileShare : uint { None = 0x00000000, Read = 0x00000001, Write = 0x00000002, Delete = 0x00000004, } public enum ECreationDisposition : uint { New = 1, CreateAlways = 2, OpenExisting = 3, OpenAlways = 4, TruncateExisting = 5, } [Flags] public enum EFileAttributes : uint { Readonly = 0x00000001, Hidden = 0x00000002, System = 0x00000004, Directory = 0x00000010, Archive = 0x00000020, Device = 0x00000040, Normal = 0x00000080, Temporary = 0x00000100, SparseFile = 0x00000200, ReparsePoint = 0x00000400, Compressed = 0x00000800, Offline = 0x00001000, NotContentIndexed = 0x00002000, Encrypted = 0x00004000, Write_Through = 0x80000000, Overlapped = 0x40000000, NoBuffering = 0x20000000, RandomAccess = 0x10000000, SequentialScan = 0x08000000, DeleteOnClose = 0x04000000, BackupSemantics = 0x02000000, PosixSemantics = 0x01000000, OpenReparsePoint = 0x00200000, OpenNoRecall = 0x00100000, FirstPipeInstance = 0x00080000 } | Добавим описание Win32 API функции CreateFile, указав в параметре CharSet, что нам нужна Unicode версия этой функции: [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] internal static extern SafeFileHandle CreateFile ( string lpFileName, EFileAccess dwDesiredAccess, EFileShare dwShareMode, IntPtr lpSecurityAttributes, ECreationDisposition dwCreationDisposition, EFileAttributes dwFlagsAndAttributes, IntPtr hTemplateFile ); | Функция CreateFile возвращает файловый описатель (file handle), который можно передать конструктору FileStream. Запись в файл Сейчас мы перепишем метод WriteFile так, чтобы он мог работать с длинными именами файлов: static void WriteFile(string fileName) { string longFileName = @"\\?\" + fileName; // Создадим файл с правами на запись SafeFileHandle fileHandle = CreateFile ( longFileName, EFileAccess.GenericWrite, EFileShare.None, IntPtr.Zero, ECreationDisposition.CreateAlways, 0, IntPtr.Zero ); // Проверка на ошибки int lastWin32Error = Marshal.GetLastWin32Error(); if (fileHandle.IsInvalid) { throw new System.ComponentModel.Win32Exception(lastWin32Error); } using(FileStream fs = new FileStream(fileHandle, FileAccess.Write)) { string text = string.Format("FileName Length: {0} symbols", fileName.Length); byte[] bytes = Encoding.Default.GetBytes(text); fs.Write(bytes, 0, bytes.Length); } } | Чтение из файла Выполнив метод WriteFile у нас создастся файл с длинным именем. Правда теперь его нельзя будет открыть ни одним редактором, разве что это программа также будет использовать синтаксис "\\?\" для открытия файлов. Наш метод ReadFile не исключение и в текущем состоянии он будет "кидать" все тот же "PathTooLongException". Сейчас мы его перепишем аналогично методу WriteFile, изменив права записи на чтение: static void ReadFile(string fileName) { string longFileName = @"\\?\" + fileName; // Создадим файл с правами на чтение SafeFileHandle fileHandle = CreateFile ( longFileName, EFileAccess.GenericRead, EFileShare.None, IntPtr.Zero, ECreationDisposition.OpenAlways, 0, IntPtr.Zero ); // Проверка на ошибки int lastWin32Error = Marshal.GetLastWin32Error(); if (fileHandle.IsInvalid) { throw new System.ComponentModel.Win32Exception(lastWin32Error); } using (FileStream fs = new FileStream(fileHandle, FileAccess.Read)) { int c; while (fs.Position < fs.Length) { c = fs.ReadByte(); Console.Write((char)c); } } } | Запускаем приложение на выполнение и видим, что файл прочитался, при чем длина его имени равна 288 символов:
Удаление файла Если мы попробуем удалить существующий файл вручную, например, из Проводника, то у нас этого не получится, система скажет, что файл не найден. У нас также не получится удалить файл программно используя клас File, например так: File.Delete(fileName); Для того, чтобы удалить файл с длинным именем нам необходимо воспользоваться Win32 API функцией DeleteFile. Добавим ее объявление, указав, что нам нужна Unicode версия: [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool DeleteFile(string lpFileName); | Теперь создадим метод Delete(), который добавит префикс "\\?\" к имени файла и вызовет только что добавленную функцию DeleteFile: static void Delete(string fileName) { string longFileName = @"\\?\" + fileName; DeleteFile(longFileName); } | Теперь, вызвав функцию Delete, можно удалять файлы с длинным названием.
Ограничения и недостатки данного подхода Теперь мы знаем, как решить проблему длинных путей к файлам. Давайте рассмотрим, что мы можем потерять при использовании такого подхода. Во-первых - безопасность. Префикс "\\?\" не только позволяет нам использовать длинные пути к файлам. Его применение включает минимальные права для модификации файловой системы. Этот префикс "выключает" нормализацию файлового имени, которая вызывается функциями Windows API, включая удаление концевых пробелов, использование синтаксиса "." и "..", конвертирование относительного пути в полный путь и т.п. Во-вторых, не все Windows API функции поддерживают префикс "\\?\" . Например, если функция LoadLibrary получит путь к файлу более 260 символов, то будет сгенерировано исключение. Еще одним фактором, который можно отнести к недостаткам, является совместимость с другими Windows-приложения и сама оболочка Windows, работающая только с путями к файлам меньше 260 символов. Это означает, что если ваше приложение поддерживает длинные пути, то совсем не обязательно, что другие программы смогут открыть ваши файлы. Тем более непосредственно из самой операционной системы такие файлы нельзя ни переименовать, ни скопировать, ни переместить и т.д. Таким образом, если только ваше приложение будет работать со своими файлами, путь к которым очень длинный, то для решения такой задачи можно использовать описанный в этой статье подход. С другой стороны, если результатами работы вашего приложения должны пользоваться другие программы, то необходимо учесть ограничения данного подхода и по-возможности изменить логику сохранения файлов.
|
-
На портале Channel 9 в одном из блогов появилась интересная запись, в которой можно познакомиться с проектной группой следующей версии языка C#. Как говорят разработчики, C# 4.0 будет содержать множество новых возможностей, которые помогут разработчикам быть (да, вы слышали это раньше  ) более продуктивными. Также некоторые интересные работы продолжаются с добавлением динамических конструкций к языку, что, безусловно, очень интересно с учетом статического характера языка C#. В блоге доступно видео (длительностью около часа), в котором не обсуждаются ни какие конкретные детали, поскольку команда C# хочет раскрыть их на PDC 2008. Впрочем, вы все равно получите очень четкое понимание того, к чему стремится язык. Видео можно также скачать по этой ссылке
|
-
Дорога к "Midori" вымощена большим количеством других кодовых названий
от Microsoft. Такую информацию сейчас можно услышать о Midori -
операционной системе следующего поколения от Microsoft.
Прежде, чем Microsoft представит бренд совершенно новой операционной
системы, будь она распределенной, объектно-ориентированной и/или
микроядерной - компания планирует выпустить некоторые новые компоненты,
которые "проложат путь" к Midori. Сейчас известно о двух элементах:
"Redhawk" и "MinSafe".
Redhawk и MinSafe - это две стороны одной и той же монеты. Redhawk -
кодовое название нового управляемого кода, работу над которым ведет
подразделение разработчиков (Developer Division), в то время как
MinSafe - кодовое название дополнительного управляемого кода, который
разрабатывает команда Windows.
Оба проекта нацелены на обеспечение новой среды выполнения управляемого
кода, которая будет более меньшего размера и (как надеется Microsoft)
более привлекательной для разработчиков, которые сталкиваются с
накладными расходами, издержками текущей Common Language Runtime (CLR),
основой .Net Framework.
Redhawk может включить в себя новый компилятор и новую среду
выполнения, которая будет обеспечивать безопасность типов и сбор
мусора, но возможно, не остальную часть функциональных возможностей,
которые сейчас являются частью .Net CLR.
Команды Redhawk и MinSafe не ограничивают себя поддержкой совместимости
с Windows или .Net Framework. (Ходят слухи, что Midori может быть
"построена на пустом месте", не на базе операционной системы Windows, и
вовсе не обязательно сохранит обратную совместимость с Windows.) Также
команды Redhawk и MinSafe проявляют интерес к разработке новой
объектной структуры на базе User Mode Driver Framework (UMDF), а также новой библиотеки базововых классов (BCL).
Ходят слухи, что наработки из Redhawk/MinSafe (определенно связанные с
моделью драйверов) могут быть включены в Windows 8 - которая, если
команда разработки Windows будет придерживаться расписания, выйдет в
2011/2012 гг.
Сейчас возникает очень много вопросов, основанных на вышеуказанной
информации, но Microsoft пока не готова говорить о Midori, Redhawk или
MinSafe.
Любопытно, как Microsoft работает над тем, чтобы обеспечить native (в
противоположность managed) реализацию Веб-служб, которые Microsoft
по-видимому подготавливает как часть Windows 7. Парни из AeroXP недавно
описали эту платформу - о которой Microsoft планирует более детально
рассказать на Профессиональной Конференции Разработчиков (PDC) в конце
октября этого года. Платформа будет представлена как " WinFX минус .Net". Эту платформу описывают еще одним кодовым названием: "Sapphire".
Статья подготовлена по материалам блога Mary-Jo Foley.
|
|
|
|