ReSharper и Roslyn: Q&A

Как уже все знают, MS предлагает «компилятор как сервис» в виде платформы Roslyn. Может быть некоторые из вас ее уже попробовали и составили какое-то первое мнение. После того, как почитаешь внимательнее возможности Roslyn и рассмотрев примеры работы с ним, возникает закономерный вопрос:

Как это будет работать с ReSharper и будет ли он переписан? Когда будет новый решарпер для новой студии?

В предыдущий раз ReSharper появился только в момент выпуска RC или около того, насколько я помню, т.е. достаточно поздно. Как оно будет в этот раз и как будут вместе жить ReSharper и Roslyn предлагается узнать из перевода интервью с разработчиками из JetBrains.

 

После анонса и выпуска Roslyn платформы на последней конференции BUILD, мы в JetBrains немедленно оказались погребены под вопросами о судьбе ReSharper, в смысле будет ли он использовать Roslyn для анализа кода и как они могут вместе сосуществовать. Поток вопросов не иссякнет, пока не будет использоваться единый шаблон для ответов на них:

resharper

Подробнее

Создание проектов с NuGet и ReSharper

В этом видео я рассказываю как работать с пакетами NuGet, как их комплексно устанавливать. Как пользоваться ReSharper для добавления usings и почему я никогда не указываю используемые неймспейсы. Так же расскажу о некоторых подводных камнях.

 

Hard’n’Heavy!

 

 

Async/Await для .Net 4.0

Сложность 200-400

Буквально на днях в блоге разработчиков Base Class Library промелькнуло известие о том, что теперь можно использовать async/await и для кода написанного на .Net Framework 4. А это значит можно использовать удобный подход для асинхронной работы, даже если пользователи вашей программы до сих пор сидят на «старой, доброй XP» по тем или иным причинам. Естественно такая новость не могла пройти мимо меня, чтобы я не попробовал как оно на самом деле в использовании. Забегая вперед, и что вполне ожидаемо, работает все точно так же как и в 4.5 за исключением некоторых нюансов в процессе разработки. Но обо всем по порядку.

Команда разработчиков анонсировала пакет дополнений, который позволяет использовать await в Visual Studio 2012 (в предыдущих версиях работать не будет). Выпущенный пакет может быть применен к следующим платформам (указанной версии или выше):

  • .NET Framework 4.0 (with KB2468871)
  • Silverlight 4
  • Windows Phone 7.5
  • И портируемые библиотеки опирающиеся на указанные платформы.

Т.е. это не встроенная фича .net 4.5?

И да и нет. Очень заманчиво думать, что новые ключевые слова await/async в C# являются чистым новым функционалом языка. В некоторой степени это так: компилятору необходимо проделать достаточно много сложной работы с вашим кодом, чтобы он мог ожидать операции.

Принимая вышесказанное во внимание, разработчики ожидают возможность использования await как только они переходят на новую студию – независимо от платформы языка. Если вы задумывались о том, как реализовано большинство фич языка, то вы можете догадаться, что многие вещи не просто данность и особенность языка. Множество конструкций языка опираются на вполне конкретные API, к примеру, методы расширения опираются на ExtensionAttribute, а foreach зависит от интерфейса IEnumerable. В случае с await потребуется давно любимый класс Task и некоторая хитрая обвязка, которая делает возможным использование await.

Подробнее

ReSharper Recipes. File templates.

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

Если можно создавать в обозревателе проектов новые классы используя alt+ins, то почему бы не сделать так, чтобы сразу создавался тестовый класс со всем необходимым?

Такое вполне можно сделать. Но чуть менее тривиальным способом. Итак, приступаем.

Нам опять понадобится заготовка, но теперь уже можно брать с пространством имен и со всеми включениями using. Т.е. для экспериментов берем следующий код:

Подробнее

ReSharper: Code snippets for tests.

Мне всегда было лень набирать код полными словами, писать какие-то стандартные формулировки, это просто выводит из себя или навевает вселенскую тоску. Если раньше все это было не так печально, то за последние 2 года пользования решарпером, все усугубилось настолько, что я даже public никогда полностью не наберу, а ограничусь набором “p” и нажатием пробела — ReSharper допишет слово до конца. Единственное, что я пишу полностью, так это названия методов, классов и тестов. Заметьте что только названия, а не полное объявление.  Да, и переменные за меня называет тоже ReSharper. =) Вот такой я лентяй!

Хочу поделиться с вами знанием, как развить в себе такое же лентяйство и как в этом помогает ReSharper. Т.к. мы придерживаемся Test Driven Development, то и заготовки кода (code snippets) будут относиться к тестам.

Первое, с чего начинается любой тест, это объявление тестового класса.

Кроме названия тестового класса, всё всегда одно и то же. Я физически страдаю даже от созерцания того, как это пишут другие. В информации о себе я упоминал, что на работе мы практикуем XP и, соответственно, парное программирование как неотъемлемая его часть.

После того, как объявлен класс, как всегда идет объявление тестового метода.

Смотрите сколько текста! И осмысленного тут будет только 2 (два) слова! Руками набирать все это определенно нельзя, надо это как-то автоматизировать. С помощью решарпера все делается весьма быстро и легко.

Подробнее

ReSharper — Навигация по проекту

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

Подробнее