Archive for the ‘News and Events’ Category

Async CTP Support in ReSharper 6.1

Tuesday, November 29th, 2011

This post is about ReSharper 6.1. For other features in ReSharper 6 (both 6.0 and 6.1), please see previous posts introducing ReSharper 6:

If there was one feature that has received ample attention in the run-up to ReSharper 6.1, it would have to be the request for async/await support. Despite the fact that this technology has not yet been finalized, community demand as well as the timely release of a preview version of Visual Studio vNext have convinced the ReSharper team to put in the effort to provide quality support for Async CTP.

And we’re not talking just about support for the keywords, either! The following is a list of some of the features that make working with the new features easy and enjoyable.

  • Keyword completion — somewhat unsurprisingly, async and await are now keywords that ReSharper knows about:
  • Smart completion supports async methods too. In the example below, ReSharper knows that an int return type is expected, and offers appropriate suggestions.
  • ReSharper enforces naming conventions for async methods. The “Async” suffix is configurable in the Options dialog.
  • When changing your methods to become async, you can correct the return type of an async method:
  • ReSharper verifies async propagation, so if you forget to decorate an await‘ing method with async, you will be reminded to do this:

    This also works in cases where the method is anonymous (i.e., a delegate or lambda expression):
  • ReSharper will also complain about the synchronous execution of async methods that do not contain any await instructions in them:
  • Finally, ReSharper comes with a set of analyses helping you ensure correct usage of async and await constructs. For example, in the screenshot below, ReSharper would complain about the fact that ref and out parameters are not permitted in an async method, as well as the fact that null is not awaitable:

Finally, async support permeates various areas of ReSharper infrastructure such as, e.g., its support in SSR (Structured Search & Replace). Overall, the async and await-related features have established themselves in the product, where they will stay and be improved upon until the technology’s eventual release.

ReSharper Settings in 6.1

Tuesday, November 22nd, 2011

This post is about ReSharper 6.1. For other features in ReSharper 6 (both 6.0 and 6.1), please see previous posts introducing ReSharper 6:

EAP Warning: This post is based on ReSharper 6.1 Early Access Program and some things such as screenshots and minor details might vary from the time this has been written to the time of release.

This is a first in a series of posts about some of the new options available in terms of settings with ReSharper 6.1.

One of ReSharper’s pain points has always been settings, specially when it comes to managing them across projects and/or teams. With ReSharper 6.0 we started to make changes to build in support for a new way to manage settings, but unfortunately due to time constraints, we could not get it done in time for the 6.0 release. It has however made it into the 6.1.

Unified Settings Storage

An important change is that all settings have been unified into a single storage mechanism. This means that when you load or save settings, they apply to everything, from code style to templates, patterns and naming conventions. This should make it easier than before where different things were stored in different places.

Settings for every scenario

Everyone has their own style and methodology of working. Some like to name their properties in a certain way, others don’t like to be explicit about their privates. Some use underscores, others don’t. Some like the var suggestions. Others despise it. We are all different.

When it comes to working together, we have to make compromises and settle in a series of settings and ways in which to work. One day, hopefully, we won’t have this limitation and it will be transparent to us, but until then we need to find a way to not only cope with it but define it.

This scenario is very apparent when working on a team, but even as a solo developer, we can still require different settings based on different factors. We can be working on private projects that follow our own standards or be part of an open source team that follows the standards for the OSS project.

We hope with ReSharper’s new settings we can try and accommodate different scenarios. Let’s cover a few of the simpler ones.

Single developer and same settings for all solutions

If you are a solo developer or like to have the same settings across every single solution, then you won’t notice much difference in how you save your settings. You access the settings using the regular ReSharper | Options dialog and once done you press the Save button

image

These are also known as ReSharper Global Settings and are stored in

%AppData%\JetBrains\ReSharper\vAny\GlobalSettingsStorage.DotSettings

making them easily accessible for backup and restore as well as persistence during upgrades.

Different private settings on different solutions

Sometimes we’d like to have different settings based on different solutions, even if we are not necessarily sharing these settings with a team. We’ve made this scenario quite simple too. Once again we open up the ReSharper | Options dialog and make the required changes. This time however, instead of clicking on the Save button, we click on Save To and select  %SolutionName% Solution  – Private where %SolutionName% varies based on the active solution

image

This will create a file called %SolutionName%.SLN.DotSettings.user in the solution folder (in our case ConsoleApplication2.SLN.DotSettings.user) which holds the settings for this particular project. It is important to note that this file should not be checked in to source control as each user would have their own specific settings and thus one would override the other. We recommend that this file be added to the list of files to ignore by the VCS (i.e. add to .gitignore).

Shared team settings

The next step is to have a series of settings shared across the team. As you can guess from the previous screenshot, this is merely just choosing the next option down when saving settings:

image

which will create a a %SolutionName%.SLN.DotSettings file in the solution folder. This file should be checked in to source control.

These cover some of the simple scenarios when it comes to settings. However, sometimes it is not that simple. Often we want to have the best of both worlds. For instance, we might like to have team settings and tweak them a little bit to our own use. That’s where ReSharper’s smart settings come in.

Combining Settings: Layers

Settings in ReSharper are like onions, they have layers, and these layers, combined with what we call internally “smart savings”, provide more flexibility when it comes to tweaking settings.

Say for instance we are using some shared settings from a team settings file checked in with the project, yet there are certain settings we’d like to change privately that only affects us. How would we do this?

Quite simple. We modify the settings we want tweaked and then save it as Solution Private. ReSharper realizes that there are different values for a setting and the layering kicks in which one layer override another one. The actual order of the layering is:

image

Private Settings currently override Solution Shared, which in turn override Global settings. As such, by tweaking the settings to our individual needs (only those required), we can override specific team settings.

[Note: Some have mentioned that this wouldn’t enforce team settings. True, it does not, and we believe in discipline versus constraint.]

Managing Options

You might have noticed that in the ReSharper menu, as well as the Options dialog there is a new entry / button labeled “Manage Options” and “Manage…” respectively. These provide access to managing the different settings layers easily as well as importing/exporting and resetting.

image

When clicking on them, we’re displayed the following dialog:

image

The dialog box lists all the different layers currently available. Out of the box, ReSharper ships with the three we’ve already discussed: Global, Private and Shared with Team. Each of these are appropriately placed in the correct Group, which also happens to be three. From this dialog box we can edit each of these as well as import and export settings.

To edit specific settings, we merely select the one we’re interested in and click on the Edit… button on the top-left corner. This opens up the regular Options dialog box for us, with a minor difference. It now displays the name of the layer we are editing:

image

This difference is also apparent in that the Save To Button is no longer present, as when clicking Save we will automatically save the layer we are editing. When we edit the settings, only those of that specific layer are updated. Everything else stays intact.

Summary

The new ReSharper settings is hopefully designed in a way which allows to not only ease the pain of sharing settings, but provide for a variety of options and maximum flexibility. In the next parts we’ll cover how to add additional layers (including storing settings on Dropbox for instance), re-order, as well as importing and exporting of old and new settings.

Important: Change of Venue for JetBrains Event in London Today

Friday, November 18th, 2011

If you’re planning to attend the JetBrians Magical Mouseless Continuous England Group Tour event today in London, please be aware that the location has changed.

The new location is 150 Minories, London EC3N 1LS

It’s only 5 minutes walk from Aldgate Tube Station, and 10 minutes walk from the old location on 45 Beech Street.

We sincerely apologize for the short notice on venue location change, and we’re looking forward to seeing you at the event!

Oredev License Raffle Winners!

Thursday, November 17th, 2011

We’ve recently got home from Oredev after having a great time talking with developers from all around Northern Europe, drawing pictures and shaping the geek fashion. This is one terrific conference and we’ll do our best to get there next year as well.

We have also invited attendees to take part in a license raffle at the booth, and we are now happy to announce the 10 lucky winners. Here they are:

  • Magnus Kivi: IntelliJ IDEA Ultimate license
  • Robert Broden: IntelliJ IDEA Ultimate license
  • Alexander Tarnowski: IntelliJ IDEA Ultimate license
  • Henrik Andersson: dotTrace Performance + Memory licenses
  • Olle Jacobsen: dotTrace Performance + Memory licenses
  • Erik Agren: dotTrace Performance + Memory licenses
  • Shmuel Gershon: dotTrace Performance + Memory licenses
  • Jens Ribbholm: ReSharper license
  • Tommy Savela: ReSharper license
  • Jukka Puranen: RubyMine license

Congratulations to those lucky devs who should receive their license certificates in a short while. Develop (and profile) with pleasure!

ReSharper 6.1 EAP for Visual Studio 11

Thursday, November 10th, 2011

We recently announced the availability of ReSharper 6.1 EAP which includes initial experimental support for VS11. What wasn’t included was an installer, which made the whole support pretty much useless. We only realized this after shipping it and someone tweeting “WTF is VS11 checkbox?”

FAIL!

In all seriousness though, we knew that this was missing. We had intended to provide a VSIX that allows you to install ReSharper 6.1 in VS11 on the same day of the release of EAP, but it didn’t happen. However, that VSIX is now available, and you can obtain it from the nightly build (which btw have resumed) page, as well as the SDK. The evaluation license key for the VSIX is also provided. To install it into VS11, merely close down the IDE, double-click on the VSIX and you’re done.

If you have any issues please report them here or on our forums.

MSpec Runnner Available for ReSharper 6.1 EAP

Thursday, November 10th, 2011

Below is a link to the MSpec binaries compatible with ReSharper 6.1 EAP. This is just a temporary link until MSpec is officially updated by Alex who’s currently chasing Elephants in Uganda!

Download the binaries from here

Please give us feedback here if you have issues.

Thanks.

ReSharper 6.1 EAP Opens: Much More than a Bugfix Release

Friday, November 4th, 2011

It took longer than expected but here we are, opening the ReSharper 6.1 Early Access Program that’s meant to eliminate any pain points you might be having with ReSharper 6.0, via performance and bug fixes. However, ReSharper 6.1 also provides a lot of new functionality that all 6.0 users will be getting as a free upgrade.

UPDATE! ReSharper 6.1 is officially released, Early Access Program is over.

Here are some of the best reasons why you should totally try ReSharper 6.1:

  • Performance fixes: Has ReSharper 6.0 been harsh on you performance-wise? Has it been processing source files longer than expected? 6.1 shouldn’t. Here’s the list of performance issues that have been fixed.
  • Bug fixes. The list of bugs fixed for 6.1 is here for you, highlighted by massive efforts to improve unit testing, structural search and replace, VB.NET code resolve, as well as code completion and typing assistance in ASP.NET MVC 3 (Razor).
  • New settings engine. Settings have been revamped extensively, with extra emphasis on sharing and managing them. We have made many more settings accessible and sharable, and introduced new granular settings — for example, those for IntelliSense behavior for different languages. Settings are now layered meaning that you can define global, per-solution, per-team or individual settings. You can now export and import all or selected settings to/from a single file — for this and other settings management operations, use the new Manage button under ReSharper > Options.

  • Here’s a rough list of settings-related problems solved for 6.1. Mind you, nothing is set in stone yet. We’re still making changes to this subsystem, and we’ll do that based on feedback from you and your team.

  • Support for Async CTP. You have asked for it: Not only does ReSharper 6.1 support async and await keywords — both in C# and VB.NET — but it also provides a set of code inspections and quick-fixes: for example, it sees dead code when an asynchronous method lacks await operators, and warns when you’re using a wrong return type in an asynchronous method.
  • Optimize Assembly References. This has been requested for even longer, and here it is: ReSharper 6.1 detects any references that are not effectively used in your project, and provides a nicely built UI to get rid of all or some of them. Project maintenance just got easier with ReSharper!
  • Experimental support for the initial Visual Studio 11 Developer Preview. We have adapted ReSharper to run under Dev11, and it does so fairly well with existing code. Manual setup is required here, and we’ll follow up with a post containing VS11 install guidelines. However, please understand that this is only initial, experimental support for existing types of projects with a specific Developer Preview build (the one made available on September 16, 2011.) We can’t guarantee any consistency of your experience with ReSharper 6.1 EAP (or even the future release of 6.1) under VS11 Developer Preview. Needless to say, no support for developing Metro style applications is there. Official support for VS11 will not be made available any earlier than the next major ReSharper release.
  • ReSharper SDK. This is something that should simplify ReSharper plug-in development dramatically. Delivered as an MSI or ZIP file, the SDK provides a full set of ReSharper assemblies, including test infrastructure assemblies required to test ReSharper plug-ins, target files, and (in the MSI version) Visual Studio templates for creating different kinds of plug-in projects.
  • A great load of improvements relevant to web developers. This includes new quick-fixes and refactorings for CSS; Structural Search and Replace for HTML and ASP.NET; Move Helper refactoring, internationalization and Call Tracking for ASP.NET MVC 3; generation of event subscriptions in ASP.NET; a UI to configure path mappings for web site deployment; and many more improvements, some major, others not so much, that we’ll be expanding upon in a separate blog post.
  • New code inspections and quick-fixes for C# and VB.NET. Aside from the set of Async CTP related inspections, ReSharper 6.1 has also improved in terms of control flow redundancy analysis (for instance, detecting more cases of redundant return statements); it also detects access to disposed closure and covariant array conversions, and provides corresponding quick-fixes where available.
  • XAML support improvements including code completion enhanced in certain scenarios, batch generation of event subscriptions, improved attached property awareness in error highlighting and code completion, as well as an option to create a namespace alias from usage:

We have also added a new refactoring to convert iterators to methods; internationalization for VB.NET projects; navigation and search updates including Quick Search in Type Hierarchy window, export to HTML and XML from all tool windows supporting import/export functionality; and more. There are simply too much changes, subtle and prominent, to summarize in a single blog post without turning it into an encyclopedia.

For die-hard fans, here’s the list of all YouTrack issues fixed for 6.1.

Go forward and download ReSharper 6.1 EAP builds ReSharper 6.1 official release, and expect more blog posts covering 6.1 functionality in greater detail to come up soon.

The JetBrains Magical Mouseless Continuous England User Group Tour

Tuesday, October 18th, 2011

After months of preparations and in collaboration with  NxtGen User Groups, VBug and Anteo, we are happy to announce the upcoming JetBrains User group Tour of England: 5 Days, 5 Cities, finishing it off in London in style!

The Tour Dates

  • Monday 14th Nov - Essex
  • Tuesday 15th Nov - Cambridge
  • Wednesday 16th Nov - Manchester
  • Thursday 17th Nov - Coventry
  • Friday 18th Nov - London

(For more information and Registration, see below)

The Agenda for Essex, Cambridge, Manchester and Coventry

Mouseless Driven Development

Do you know ReSharper, are using it or have used it in the past? Do you think you are getting the full potential out of it? Even developers that have been using it for several years often only scratch the surface. Come and learn all the tips and tricks of ReSharper and see how to use it to it’s full potential to truly create a mouse less driven development environment.

The Agenda for London

The London event will be slightly longer, but will be compensated with Food and Beer!

Mouseless Driven Development

Do you know ReSharper, are using it or have used it in the past? Do you think you are getting the full potential out of it? Even developers that have been using it for several years often only scratch the surface. Come and learn all the tips and tricks of ReSharper and see how to use it to it’s full potential to truly create a mouse less driven development environment.

Continous Delivery

Paul Stack joins us to talk about Continuous Delivery and how to use TeamCity for this purpose:

Continuous Delivery is all about allow features to be delivered in a more timely and reliable fashion. In this session, Paul will introduce the concepts of continuous delivery, through continuous integration;  automation of builds, test and deployment process, version control techniques for Continuous Delivery, Pitfalls, Objections and Obstacles.

Sebastian Lambla will show us to to twist Visual Studio and ReSharper to provide dynamic plug-in functionality with OpenWrap.

Registration

If you are going to attend the London meeting, please use our EventBrite page to sign up. If you are going to attend one of the other meetings across England, please use the corresponding link below to register directly with the user group.

(In London we will be providing Food and Drinks, so please make sure that you sign up ahead of time. Places unfortunately are limited to approximately 70 people!)

Scotland

Unfortunately, despite our initial intentions of also including Scotland in the tour, we were not able to due to scheduling. However, we hopefully do plan to repeat the tour with Scottish User Groups in the New Year so please stay tuned!

Thank you!

A big Thank You to the Coordinators of NxtGen User Group, VBug and Anteo for their efforts in organizing this tour and collaborating with us in all possible ways.

DevelopMentor Partnership

Tuesday, October 11th, 2011

We have some very exciting news to announce!

We have reached an agreement with DevelopMentor, under which they will include ReSharper with all their open enrollment .NET courses in the UK and US. This means that when you enroll in one of their courses, you get a free Personal License of ReSharper Full Edition.

DevelopMentor are specialized in intensive and in-depth .NET Training. With a range of well known instructors such as Richard Blewitt, Andrew Clymer, Michael Kennedy, Anthony Sneed, Jason Whittington, Mark Blomsma among others, you are sure to get .NET training from highly skilled and knowledgeable professionals. And now you can walk away, not only knowing how to make the most out of Visual Studio by leveraging ReSharper, but also keeping your own license!

Here’s a list of DevelopMentor .NET Courses. If you haven’t already checked them out, make sure you do!

BASTA! Prize Winners

Tuesday, October 4th, 2011

We had our first booth at BASTA! Autumn last week and we were very glad to take part in the conference. A lot of great interaction with the audience and a chance to talk to both new and existing users of our products. As those of you that were there know, we raffled out 30 licenses at the conference!

If you’re not one of the lucky winners, you still have one more chance to win. Among all those that filled out the Prize drawing cards, we have selected three winners (who chose their own products):

And the lucky winners are…..

  • Raimund Keese - dotTrace [Update: Has already won a license at Raffle on-site]
  • Steffen Hamman - dotTrace [New Winner since Raimund was picked already]
  • Alexander Polischuk - ReSharper
  • Kai Moosburger - ReSharper

Congratulations. Your license will be on it’s way in the next few days!

See you at the next conference (and if you happen to be at FOWA in London, stop by and say Hello!)