Interactive tutorials are part of ReSharper 2017.2

Posted on by Alexey Totin

A while ago, along with ReSharper 2016.3, we released a plugin that added a set of interactive tutorials to ReSharper.

Starting with 2017.2, the tutorials are not a plugin anymore but an integral part of ReSharper.

  1. Select ReSharper | Help | Tutorials…
  2. Choose a tutorial and click Run.
  3. Follow the steps suggested.

ReSharper interactive tutorials

There are some differences compared to the latest available plugin v.0.9.13:

  • First of all, existing tutorials are much more polished.
  • Bug fixes. Lots of them.
  • New content: take the What’s New in ReSharper 2017.2 tutorial to learn about the key C# features added in that release.

Tutorials will now be updated on a regular basis. With each new ReSharper release, you will find a new tutorial that overviews the latest features. So now, every time you update your ReSharper instance, make sure to check out ReSharper | Help | Tutorials…

Comments below can no longer be edited.

92 Responses to Interactive tutorials are part of ReSharper 2017.2

  1. Mark says:

    October 15, 2015

    D’oh! It was all sounding great till the bit about AssemblyVersion 1.0.* not being supported. We use that a lot as it makes it easy to ensure that our MSIs will always overwrite DLLs when upgrading a program.

    • Matt Ellis says:

      October 16, 2015

      Unfortunately, assembly version is a part of the public API, and it can cause issues if we ignore it, especially with strong naming.

      Our suggestion is to use a static version number when developing, but specify a proper version at release build time. You can do this with something like TeamCity’s AssemblyInfo patcher build feature, which allows you to set the assembly version during CI builds, or something simple, like this:


      #ifdef DEBUG
      [assembly: AssemblyVersion("1.0.0.0")]
      #else
      [assembly: AssemblyVersion("1.0.*")]
      #endif

      This will use a static version during development, but calculate a version number when doing a release build.

      • Mark says:

        October 16, 2015

        Thanks, neat idea with the debug flag, we could definitely use that! I realise the proper way would be something better on the build server, but for now it’s not something we could do.

    • Michael Geramb says:

      October 27, 2015

      Hi mark,
      great feature! @”Unfortunately, assembly version is a part of the public API, and it can cause issues if we ignore it, especially with strong naming.”. Have your development team thought about batching depended assemblies on binary level instead of recompiling? It’s very simple, I have done this already, so if you are interested in a code snipped you can contact me. Kind regards, Michael

      • Matt Ellis says:

        November 2, 2015

        Hi Michael. I’m not sure what you mean by batching. Could you explain a bit more, please?

        • Michael Geramb says:

          November 2, 2015

          Hi Matt, sorry for the wrong spelling, should mean patching. It is possible to rewrite the referenced assemblies in a compiled assembly on binary level. So if an assembly which was recompiled becomes another version (e.g. be using AssemblyVersionAttribute(“1.0.*”)) and your great build tool knowns that a dependent assembly need no recompile, you can change in dependent assembly only the reference without recompiling. If the assembly is not signed, this works great, I don’t know if this works also for signed assemblies, but I assume you must to the patch before the assembly will be signed. If you are interested in a code snipped, write me an email.

  2. Carel Lotz says:

    October 15, 2015

    How does this play along with other toolsets running in VS like Xamarin?

    • Matt Ellis says:

      October 16, 2015

      It should work just fine, as long as the toolsets are using normal msbuild techniques that specify inputs and outputs, which allow us to track timestamps. Please let us know if you do encounter any issues – everybody’s builds are different, and we can’t necessarily test all combinations.

      Also, if you do encounter issues, you can mark those projects as “always build”, which means ReSharper Build doesn’t apply heuristics, and lets msbuild run the project as normal.

      • ian says:

        November 4, 2015

        I just loaded the Xamarin starter Snake project and it refuses to build using Resharper build because “building from the command line requires a business license”.

        FYI.

  3. MichaelD! says:

    October 15, 2015

    +1 to the AssemblyVersion * support.

    Otherwise, this sounds fantastic. MSBuild is a terrible technology and should be gutted from the inside out. Or really, in any manner possible. Looks like it has already begun to do just that. 😛

    • Matt Ellis says:

      October 16, 2015

      Hi Michael. Take a look to the reply above about AssemblyVersion wildcard support. We need to take assembly version into account when looking at the public API, but it can be worked around during development builds. How does that sound?

  4. Jan Kratochvil says:

    October 15, 2015

    Will building UWP apps using .NET Native be supported?
    That’d be awesome as currently as the .NET Native build pipeline is currently not very performant.

    • Matt Ellis says:

      October 19, 2015

      As long as the UWP build process is normal msbuild tasks and targets, then it will work. As I understand it, the .net native compilation only applies in Release mode, while Debug mode is normal .net compilation, so building in Debug mode should be faster than Release mode even without ReSharper Build.

  5. tobi says:

    October 15, 2015

    Fantastic! I hope JetBrains will expand even further and cover even more of what developers do all day.

  6. The Morning Brew - Chris Alcock » The Morning Brew #1948 says:

    October 16, 2015

    […] Introducing ReSharper Build – Matt Ellis […]

  7. jalpesh vadgama says:

    October 16, 2015

    Looks great. Definitely a productivity booster.

  8. Markus says:

    October 16, 2015

    Does ReSharper Build also work with VS2013? Or only with VS2015?

    • Matt Ellis says:

      October 19, 2015

      We’re still testing full compatibility, but ReSharper Build works with all versions of Visual Studio that ReSharper itself supports, so that’s VS2010, VS2012, VS2013 and VS2015. Of course, if you encounter any issues with a particular version of Visual Studio, please let us know.

      • Markus says:

        October 22, 2015

        I didn’t try it yet. I jst wanted to ask if it is generally possible.
        Nice to hear that also older VS versions support ReSharper Build. I will tray it as soon as ReSharper 10 is released…

  9. Dew Drop – October 16, 2015 (#2113) | Morning Dew says:

    October 16, 2015

    […] Introducing ReSharper Build (Matt Ellis) […]

  10. Jirka says:

    October 16, 2015

    It would be fine to extend this example by providing concrete measure on Resharper solution itself. If i am right, it is about 200 projects, so there is space for measurements. Isn’t it?

    • Jirka says:

      October 16, 2015

      i mean performance improvement measures…

      • Matt Ellis says:

        October 19, 2015

        Hi Jirka. I’m afraid we don’t really have any performance figures to hand – the performance improvements depend very much on the scenario of the build (rebuild, tests, public API changes, etc.).

        But you can check out this gif of fixing a bug, recompiling and running tests in a ReSharper solution made up of 541 projects. It’s pretty quick 🙂

  11. Richard Moss says:

    October 16, 2015

    One thing I liked about the sadly defunct .NET Demon was that it automatically rebuilt each time I saved a file – I really miss this in VS2015 and even now I still forget regularly to manually build and wonder why my changes haven’t been applied.

    Is build-on-save something that this tool will offer?

    Thanks;
    Richard Moss

    • Matt Ellis says:

      October 19, 2015

      Yes, although this is actually part of the Continuous Testing feature, as build on save only really makes sense if you use the compiled output for something. To enable this, go to ReSharper → Unit Tests → Show Continuous Testing Session, and change the Mode drop-down to one of the options – “On Save, Build and Run Dirty Tests” or “On Save, Build and Detect Dirty Tests”. We’ll look more at Continuous Testing in a forthcoming blog post.

      If you have any feedback on this, please let us know while the EAP is still in progress!

      • Richard Moss says:

        October 20, 2015

        Thanks for the response.

        I don’t use Resharper’s unit testing functionality (in fact I disable it in the hopes of freeing some resources). For continuous testing I use NCrunch, so “Save and Build” works for me, “Save, Build and Do Something With Tests That I Don’t Care About” won’t. It could be that Resharper’s test stuff could supplant NCrunch in time, but it would have to be pretty exceptional to do that.

        I mainly use this feature for web applications – if I change server side code that needs compiling, I used to rely on .NET Demon recompiling the DLL, so all I had to do in the web browser was refresh the page. Now I have to remember to trigger a compile 😉

        • Matt Ellis says:

          October 20, 2015

          Good scenario, thanks – I’ve added a feature request to allow enabling “build on save” without having to enable or use Continuous Testing. You can track and vote on the issue here: RSRP-449679

  12. Brian Sayatovic says:

    October 16, 2015

    I’m excited and intrigued by the continuous build. I’ve installed EAP 5 to try it out, but the solution-wide build tells me many of my projects failed. When I look at the messages from it, there are no errors. And if I build the individual project, it succeeds. So I’m still intrigued, but now I’m also apprehensive.

    • Matt Ellis says:

      October 19, 2015

      Could you log the details about the error, please? The more details that enable us to reproduce and debug, the better. Thanks!

  13. Vasily Kirichenko says:

    October 17, 2015

    Is it possible to use only the build feature and turn off *all* other ReSharper features?

    • Matt Ellis says:

      October 19, 2015

      Yes. Most features (such as code completion or inspections) can be disabled, or configured to use default Visual Studio functionality, so you can tune how ReSharper works for you.

      Furthermore, ReSharper allows a specific feature set or even a whole product to be disabled, in the ReSharper → Options → Products and Features options page. Feature sets can be something like navigation, unit testing or CSS support, while a product can be everything to do with dotTrace, or dotCover. ReSharper Build is a product, which means that while it shares common code with the rest of ReSharper, it can be enabled/disabled independently of the rest of the suite.

      So, yes, you can disable everything apart from ReSharper Build. Obviously, we’d like you to use some of the other features of the suite, too :). ReSharper is very configurable, and can usually be set up to fit most people’s coding styles and habits. If there’s anything you don’t like, or that doesn’t work for, please let us know!

      • Vasily Kirichenko says:

        November 2, 2015

        Excellent! Just what I wanted. Thanks a lot.

  14. F# Weekly #42, 2015 | Sergey Tihon's Blog says:

    October 18, 2015

    […] Introducing ReSharper Build […]

  15. Les liens de la semaine – Édition #154 | French Coding says:

    October 19, 2015

    […] ReSharper Build pour accélérer le processus de compilation de vos […]

  16. Dave S says:

    October 19, 2015

    Is this only for local builds? Or would it work for builds run through TFS?

    • Matt Ellis says:

      October 19, 2015

      This is only for local builds. It’s an optimisation for msbuild to intelligently skip building when you don’t need to, by monitoring your environment between builds. It’s designed to make repeated local builds faster, rather than to speed up a CI system.

  17. NYC’s subway needs system update, ‘Star Wars’ fans care about website performance, and JetBrains develops new tool—SD Times news digest: Oct. 19, 2015 - SD Times says:

    October 19, 2015

    […] “Once enabled, ReSharper Build replaces and overrides the standard Visual Studio build process, and is invoked whenever a build is required—building, rebuilding or cleaning the solution, running or debugging the project, or running unit tests,” wrote Matt Ellis, technical evangelist for .NET plug-ins at JetBrains, in a blog post. […]

  18. Ed Blackburn says:

    October 19, 2015

    Have you guys spoken with the MSBuild team to pass in your learnings? I dislike MSBuild and am glad someone is tackling it head on. Now that MSBuild is open sourced perhaps MS will be ameanable to suggestions etc? That DNX doesn’t use it at all I hope means we can move on eventually and leave the xml fetish behind.

    • Matt Ellis says:

      October 20, 2015

      This isn’t an msbuild issue. We’re replacing how Visual Studio orchestrates a build with a process that optimises based on extra information that ReSharper manages. There’s not much that can feed back into msbuild – nothing ReSharper Build does affects a command line build, for example.

  19. Dominic Burford says:

    October 20, 2015

    Is there a trial or evaluation version of this functionality? It sounds pretty useful and I’d be very interested in evaluating it. We use Resharper although we’re not on the latest version.

    • Matt Ellis says:

      October 20, 2015

      Yes, you can download the latest EAP of ReSharper 10. It’s a trial version, that will expire as new EAP versions, and the final version are released. You can always uninstall the EAP and reinstall the version of ReSharper, dotTrace, dotPeek, etc. that you’re currently using.

  20. Daniel says:

    October 21, 2015

    Is this present in version 9.2 or only in the 10 EAP?

    • Matt Ellis says:

      October 21, 2015

      This is a new feature in the 10 EAP. But you can download it and evaluate it for free.

  21. Fellow says:

    October 21, 2015

    The build process doesn’t feel a lot faster, maybe we’re running into some of the caveats you mentioned, so I’d like to investigate.

    Matt, can I see what MSBuilds are triggered? It looks like the output window stays empty.

    • Matt Ellis says:

      October 23, 2015

      Not as such, there isn’t a log file or anything. However, you can use the ReSharper Build & Run tool window to see what projects are built or need building. The colours of each box shows what has happened, and what will happen. Hovering over a project’s box will show a tooltip that explains why it’s been rebuilt – due to a dependency that has a change in public API, for example.

      Hopefully, this will be enough to show you why a build was triggered, even if it doesn’t tell you exactly what has changed – that is, you know the public API has changed, but not what in the API has changed. If you need more details, could you log an issue, please? Details of what you’d like to see would be brilliant.

      Also remember that compilation isn’t sped up – compilation takes as long as it ever did. ReSharper Build simply tries to make it so that you don’t compile when you don’t need to. So if you make a change to the public API of a root project, then your whole solution will likely need to be rebuilt, and that will take as long as it ever did.

      • Fellow says:

        October 28, 2015

        So as of EAP 7, I see the output, and from the colors too I can see that it identifies the changed project correctly. However it still takes much, much longer to run the build (12s from VS Build vs. 50s in R# build).
        I have since filed an issue..

  22. Cole Werner says:

    November 2, 2015

    When using Resharper build I seem to be getting build errors related to projects that are not set to build under my active build configuration. Compilation seems to cease when this error is encountered in an erroneous project. Is this a known issue or am I doing something wrong here?

    • Matt Ellis says:

      November 3, 2015

      ReSharper Build will stop after it encounters the first project with errors – this is because it knows it can’t build anything else, as this project is broken, so it stops.

      As for ReSharper building projects that should be excluded, do you mean they are set to “never build” in ReSharper Build’s options? Would you mind logging a YouTrack issue with more details? (and a repro is always an enormous help!)

      • Cole Werner says:

        November 3, 2015

        Actually what I’m saying is that in the visual studio solution build configuration (“Debug”, “Release”) I have a project set to NOT build (unchecked Build checkbox). I’m assuming at this point that Resharper doesn’t look at any of the Visual Studio build configurations to know what to build and what not to.

      • Cole Werner says:

        November 3, 2015

        This is actually already marked as a bug it seems:

        https://youtrack.jetbrains.com/issue/RSRP-450339

  23. ian says:

    November 3, 2015

    In the released version the menu has changed. It is still in Windows menu but called “Build and run”. It’s missing an icon, and I’m not a fan of the name as it sounds like an action (i.e. it will build and run if you select “build and run”).

    Finally, I’ve closed the build warnings/errors window and now I can’t find a way to reopen it.

    Good work though, I think it will be helpful.

    • ian says:

      November 3, 2015

      To reopen the warning/errors dialog you just have to click on one of the projects in the build and run window.

      • Matt Ellis says:

        November 3, 2015

        Thanks. I’ve updated the post to point out some of the bigger differences in the final RTM build.

  24. lochness says:

    November 4, 2015

    Is it possible to get resharper to inform you of how long the build took so i can compare it to the normal visual studio build as well as incredibuild?

    • Matt Ellis says:

      November 4, 2015

      Not at the moment, but it’s a nice idea! I’ve added a feature request you can track, add details and vote on. Thanks!

  25. Daniel says:

    November 4, 2015

    What about starting the build after a file is saved? .NET Demon used to do that but Red Gate discontinued the product because some similar functionality is/would be included in VS 2015. But not everyone is switching to VS 2015.

    • Matt Ellis says:

      November 4, 2015

      This is implemented by dotCover’s Continuous Testing feature. We’ll have a blog post on this soon, but in the meantime, you can enable Continuous Testing from the Unit Tests menu, and from the Continous Testing Session window, you can select to build on save, run tests on build, etc.

  26. Resharper 10 MVC Problems - A Blog about Coding says:

    November 7, 2015

    […] that is included in ReSharper 10 and is an out of process build tool that complements MSBuild (More information on ReSharper Build). I’m not sure of the real benefit for me in any case – I am more interested in the […]

  27. Jan-Pieter says:

    November 11, 2015

    The build doesn’t work if an Azure Host project doesn’t have a default configuration. Error WAT200: No default service configuration “ServiceConfiguration.cscfg” could be found in the project.

    Sad, because this is how all projects are setup and a perfectly legitimate way. Not sure how Visual Studio handles it though.

    • Matt Ellis says:

      November 11, 2015

      Hi, this appears to be a known issue. Here’s the YouTrack ticket that you can use to vote, track or add more details to: RSRP-450390

  28. frederic forjan says:

    November 11, 2015

    WHat happen if we are using PrivateObject in UnitTest or any other way like reflection, typically in UnitTest.
    What’s happening ?

    • frederic forjan says:

      November 11, 2015

      Answering to myself : it will not break anything as any issue with be found at runtime not compile time.

  29. Christopher Green says:

    November 13, 2015

    This is an amazing tool, finally I can carry on working whilst building. Currently you can’t build solutions with web projects though even if they’re not set to build. I have a large solution with one web project which i’d love to use with your tool, i never actually need to build the web project but do need it to remain part of the solution for ease of access to aspx files etc.

  30. Alex Sanseau says:

    November 16, 2015

    Excellent new feature to ReSharper, I can’t wait to try it out.

    Good tip as well about making classes/interfaces internal instead of public (which we should do anyway if it’s not used outside the assembly, regardless of using ReSharper build), but does it support InternalsVisibleToAttribute attributes which are sometimes used to make internal methods visible to a test assembly for instance?

    Would ReSharper Build know a change to an internal method could affect the test assembly and that it would need rebuilding as well as a consequence?

    • Matt Ellis says:

      November 17, 2015

      Unfortunately, right now it doesn’t support the InternalsVisibleToAttribute. Here’s an issue for you to vote, track and add any details: RSRP-450733

  31. Jeff says:

    December 24, 2015

    hi Matt,

    Is it possible to customize the layout of project boxes in ReSharper Build ?

    like, change font size, or re-grouping these project boxes by different rules ?

    Cheers,

    • Matt Ellis says:

      December 28, 2015

      There’s no support for changing the layout at the moment. The best thing to do is file a feature request in our issue tracker with details about what you’re after, as well as why you’d like to see those features.

  32. Jirka says:

    January 15, 2016

    Added comment related to web site project types to the mentioned issue request https://youtrack.jetbrains.com/issue/RSRP-450339

  33. Nicolas says:

    February 7, 2016

    Hello,

    Is it possible to call resharper build from command line (maybe with devenv.exe call or ReSharper Command Line Tools ?)

    Thanks

  34. Ralf says:

    February 18, 2016

    How can we force build order?
    I have a solution with a wixlib project. The output has to be embedded into another projects output. WIth default VS build manager I can manually set the dependency and force the wixlib project to be build before the depending project. Build & Run ignores this and the build fails.

  35. Werner Hartinger says:

    August 26, 2016

    Great feature, but I´m missing the log output. Obviously ReSharper build catches it, as I see the last (maybe 200) lines if the build is successfull. But I cannot see it, while the build is running (gives you a good feedback) nor do I see it in case of an error or a warning (helps in analyzing some tricky errors)

  36. jeremy simmons says:

    September 8, 2016

    THIS IS AWESOME SAUCE!

    I’m annoyed I have only just now found out about this.

    Is this available as a stand-alone console tool?!

    • Matt Ellis says:

      September 9, 2016

      No, although it is something we’re considering.

  37. Bradley Vause says:

    October 4, 2016

    Hi,

    When building and debugging and android app on a Genymotion emulator, the Resharper build took twice as long as the Visual Studio build.

    Just an FYI

    • Matt Ellis says:

      October 5, 2016

      Sorry to hear that. Could you log some details about the issue for us, so we can take a look, please? https://youtrack.jetbrains.com

  38. Dam says:

    November 30, 2016

    Hi, is there some way to remove the ‘green’ background of the Windows Task bar when the build is done? Disable the ‘Task bar: show build progress in windows task bar’ does not remove the green background when the build is done.

    • Simone says:

      March 29, 2017

      I have the same problem. Any solutions?

  39. Visual studio performance tips – maesterz says:

    April 12, 2017

    […] you’ve installed ReSharper on your system, you could also give ReSharper Build a try. It uses some heuristics to determine if a project should be built or not. I’ve enabled […]

  40. Why Visual Studio keeps rebuilding my projects for no good reason - Michael's Coding Spot says:

    April 28, 2017

    […] ReSharper Build supposedly solves this problem. And I believe it comes with ReSharper out of the box, no extra license required. […]

  41. Jerome Lambert says:

    September 11, 2017

    I tried to follow the tutorial but I’m blocking after 1 step.
    I follow the Alt+Ins to generate constructor but I’m not able to go to next step

    • Alexey Totin says:

      September 11, 2017

      Hi Jerome,
      Are you talking about the What’s New in ReSharper 2017.2 tutorial? If yes, please make sure you select both members and turn on ‘Make parameters optional’ s in the Generate window.

  42. LEONARDO LARSEN RIBEIRO says:

    September 22, 2017

    Hello, i have the same problem in this tutorial

  43. Jens says:

    February 21, 2018

    > Non-MSBuild projects. ReSharper Build can’t work with project types that are not MSBuild based. This includes Web Sites (folder based projects, not MVC web applications), WinJS applications and DNX applications. These projects will fall back to the standard Visual Studio build process, although the rest of the projects in the solution can continue to use ReSharper Build.

    That does not appear to be true for e.g. vdproj (Setup projects, extensions)… it seems like ReSharper simply skips these rather than doing the described fallback, only way to build them seems to be to disable ReSharper build, which is a bit unfortunate. Any way to fix that?

  44. Michel Schep says:

    November 16, 2018

    When I create a simple example solution with two projects it does not work.

    Project A uses class X from project B.
    Project B contains public class X used in Project A.
    Project B also contains internal class Y.
    Both X and Y are seperate files as well.
    When I change (the internal) class Y Resharper Build still builds Project A as well.

    Why?

    Class Y is not part of the public API of Project B because it is internal.
    So I thought Resharper Build was able to detect this and skip the build for Project A.

    Using VS 2017 and Resharper Ultimate 2018.2.
    Both Project A and B are .Net Standard 2.0 projects.

    Any idea why it doesn’t work as I expected?

    • Michel Schep says:

      November 16, 2018

      Just did the same with .net framework projects and it works!
      So it has something to do with .net core I guess?

      • Matt Ellis says:

        November 16, 2018

        .NET Core and .NET Standard projects are supported by ReSharper Build, so this should work as expected. Could you log an issue and attach the test projects, please?

  45. Daniel says:

    December 11, 2018

    If I change a comment within a private method, it is still building the assembly.

    As I understand, even if I change the logic within a private method, it should build the project but then just copy over the compiled dll instead of rebuilding all the referencing projects. Is that correct?

    • Matt Ellis says:

      December 19, 2018

      Yes, it should still build the assembly that contains the private method, but if only a comment has changed, then it shouldn’t build any other projects. If that’s happening, can you log an issue so we can follow up with more details, please?

  46. Daniel says:

    December 20, 2018

    Can you make a setting also whether you want the build to come to the foreground. I sometimes like to do a build in the background to get things up to date while I’m working on some frontend changes so find the Resharper Build annoying the way it gets the focus.

  47. Daniel says:

    January 28, 2019

    I’m constantly getting the build error “Destination array was not long enough. Check destIndex and length, and the array’s lower bounds.” when using Resharper Build. I have the latest version

    • Matt Ellis says:

      February 1, 2019

      Could you log an issue on YouTrack with details of the exception, please?

      • Daniel Sutherland says:

        February 5, 2019

        I have. Its RSRP-473116 which hasn’t been looked at since 24th Jan.

Subscribe

Subscribe to .NET Tools updates