What's New in v18.1.8

This update includes bug fixes and performance improvements.

Resolved Issues

  • [T653835] - Code Formatting - The "Blank line around" option incorrectly works for regions.
  • [T657042] - Code Formatting - Case statements are formatted incorrectly.
  • [T656618] - Code Templates - The "b" (braces) template is not expanded in some cases.
  • [T656632] - Setup Wizard - It is impossible to disable numpad key bindings under the es-ES locale.

What's New in v18.1.7

Rich Comments

With Rich Comments you can apply text formatting right inside the code editor in comments. The following Markdown-like syntax is supported:

  • **Bold**
  • *Italic*
  • _Underline_
  • ~Strike-through~

Enable Rich Comments on the 'Editor | All Languages | Rich Comments' options page or using the 'Toggle Rich Comments' toolbar button.

Unit Test Runner

With this release, you can now execute a single test case of a parameterized test directly from code. Click a CodeRush test icon and choose the desired option from the 'Run test', 'Debug test', or 'Run test with coverage' submenu.

Run Test for a Single Test Case - CodeRush, DevExpress

You can also execute a test for a particular descendant of the current class in a similar manner.

Code Formatting

We have enhanced formatting options to allow you specify how you would like to align code blocks. The "Align content by" and "Indent" options are available on the 'Braces' option page in 'Editor | C# | Formatting'. On the 'Wrapping' option page you can also align content for Initializers.

Formatting Options - CodeRush, DevExpress

Coding Assistance

With this release, Selection to Template has become more intelligent - it generates cleaner templates and uses type links, text links, or regular links intelligently depending on the element type.

We have also enhanced the 'Create Template From Selection' dialog options, allowing you to fine tune a template before committing it and quickly specify which elements should be substituted by links.

Selection to Template - CodeRush, DevExpress

JS and TS Support

Now in Javascript (and Typescript) you can:

Resolved Issues

  • [T655205] - AddCopyrightHeaderProvider raises NullReferenceException in VB
  • [T655314] - DeclareProvider creates duplicated code and then crashes
  • [T652158] - NUnit + TestCases causes issues in test runner
  • [T652717] - Rename Refactoring - Rename all the files of a partial class

What's New in v18.1.6

This update includes bug fixes and performance improvements and usability tweaks.

Resolved Issues

  • [T616989] - Duplicate Line doesn't work properly for some statements.
  • [T648037] - MarkReadOnlyProvider throws an error.
  • [T648038] - Multiple errors appear in the log.
  • [T647768] - NUnit + Derived Test classes causes issues in test runner.
  • [T645610] - Shortcuts - Synchronization with Visual Studio key bindings removes manually added shortcuts.
  • [T648928] - Template expansion of the block template (b) does not work.
  • [T646570] - The Test Runner window does not have a horizontal scrollbar.

What's New in v18.1.5

Training Window

We have ported the Training Window from CodeRush Classic. Open it using the CodeRush | Windows | Training menu item.

CodeRush - Training Window | DevExpress

This window shows shortcuts for all CodeRush features and template expansions available on the current caret position.

CodeRush - Training Window | DevExpress

Code Cleanup

We have added a Copyright Header Code Provider, which adds a copyright comment at the file's beginning.

CodeRush - Code Cleanup | DevExpress

It is also available as a Code Cleanup provider and as a template - just press the letter 'h' at the top of the file on an empty line and press your template expansion key (e.g. Space or Tab).

Before using the default header for the first time, you should configure the “First Name”, “Last Name” and “Company” fields on the IDE | User Info options page. The actual text of the generated header is stored in the h template expansion, and can be changed there as desired.

Clipboard and Selection Tools

Code Analysis

We have added a custom icon for spell checker suggestions in the Code Actions Menu so they are more easily identified in the action menu.

CodeRush - Code Analysis | DevExpress

Coding Assistance

Mega Super Copy

Okay, so maybe we went a little crazy on the name of this feature, but it IS pretty cool.

You can now use Multi-Select to mark important text elements before selecting and copying/cutting a block of code to get a richer smarter version of the code on the clipboard. Any code in the selection that has been multi-selected will become a linked Text Fields upon pasting.

CodeRush - Mega Super Copy | DevExpress

You can even create zero-length multi-selections to mark caret insertion points on the paste. Just put the caret where you want the caret to be on paste, and press Ctrl+Alt+Enter to add a multi-selection marker at that location.

Once a Mega Super Copy is on the clipboard, you can paste it as many times as you need. This is really useful for repetitive code where you know in advance what parts you want to change and where you want the cursor after paste.

You can also use the Ctrl+Alt+V shortcut to paste the most recent text Mega-Super-Copied with fields, even if it is not currently on the clipboard.

Other Coding Assistance Features

The Text Links and Text Fields behavior in Smart Duplicate Line/Selection, Mega Super Copy, and Selection to Template features is now configurable. Use the Editor | All Languages | Linked Text & Fields options page to configure when the automatic links and fields should be created. These rules apply to normal selections of code (free of any multi-selections)


We have made a Jump to window pre-configurable. You can now define a shortcut that invokes a Jump to window with a pre-configured filter. The JumpToSymbol command now accepts four parameters:

  • TypeFilter (can be: Classes, Interfaces, Structs, Enums, Delegates, and AllTypes)
  • MemberFilter (can be: Methods, Properties, Events, Fields, LocalsAndParams, and AllMembers)
  • AccessFilter (can be: Private, Protected, Internal, ProtectedInternal, Public, and AllVisibilities)
  • LocationFilter (can be: AllFiles, CurrentSolution, CurrentProject, CurrentNamespace, and CurrentFile)

You can use "and" keyword to combine filters like this: 'Classes and Structs'.

Add a new shortcut with the 'JumpToSymbol' command and the initial filter you need in 'Parameters' to make use of this feature.

For example, the shortcut with the 'Classes,Methods and Properties,Public' filter the Jump to Symbol window opens with this filter.

CodeRush - Jump to Symbol | DevExpress

We have also improved markers behavior. System Markers dropped by CodeRush are now cleaned up automatically when CodeRush detects they are redundant or no longer needed.

Refactorings and Code Providers

  • The Declare Method code provider is now available when the caret is located at the end of the line with an undeclared method.

  • The XPO Fields code provider now copies the [Obsolete] attribute from fields to their corresponding maintained properties.

  • We have added a 'Collapse Accessors' code formatter, which collapses both 'get' and 'set' property accessors into single-line form.


We have extended the CodeRush type-casting templates so that they support explicit type casting in expressions. The following new templates were added, and will expand as described if the caret is inside a code block but not on an empty line.

  • c. - Expands as (Type) with the Type identifier embedded into a Text Field so you can quickly change it. It’s also an incredibly fast way to get parens when you need them.

  • c?Type? - Adds a type-cast to a type specified in the template name variable '?Type?'.




    Inside an Expression



    On an Empty Line

    double @double = (double)Expression;

    DateTime dateTime = (DateTime)Expression;

  • c?Generic1Type?. and c?Generic2Type?. - Adds a type-cast to the specified generic type (with one or two parameters) and embeds its parameters into Text Fields.





    Inside an Expression



    (Dictionary<Type1, Type2>)

    On an Empty Line

    List<args> list = Expression as List<args>;

    Collection<args> dictionary = Expression as Collection<args>;

    Dictionary<args> collection = Expression as Dictionary<args>;

  • c?Generic1Type?.?Type? and c?Generic2Type?.?Type1?,?Type2? - Adds a type-cast to the specified generic type (with one or two parameters).




    Inside an Expression


    (Dictionary<string, int>)

    On an Empty Line

    List<double> @double = (List<double>)Expression;

    Dictionary<string, int> @int = Expression as Dictionary<string, int>;

Entries in the middle column reflect the new functionality in this release. Entries in the last column show existing but related casting technology. The Expression referenced in this last column will be replaced by an identifier in the clipboard (if any). See the C for Casting video for more on this existing functionality.

We have improved the ForEach text command. Now it is possible to iterate through lines of text copied to the clipboard. You can do it with the following text command: "ForEach(line in clipboardText,template))", where template is the name of the template you want to execute for each line of text on the clipboard. You can access the text of each iterated line by calling ?Get(itemName) from inside your template.

Resolved Issues

  • T644796 - Code Cleanup - The "Braces in Statements Style" rule removes braces incorrectly
  • T643108 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostics should take "complex" expressions/conditions in "If()-Operator" into account
  • T631502 - Test Runner hangs when running all tests for a solution

What's New in v18.1.4

This update includes bug fixes, performance improvements and usability tweaks.

Resolved Critical Issues

  • T637510 - Shortcuts - Bookmark 2 is placed instead of the @ symbol on AZERTY keyboard

Resolved Issues

  • T637184 - Invert Selection - Cannot add a shortcut for Invert Selection
  • T638402 - Region Painting - Arrows are not rendered in code and an empty string is shown in regions
  • T639291 - Region painting - #endregion adornment is invisible
  • T636524 - Templates - Nullable templates in Visual Basic should use the <Type>? syntax instead of Nullable(Of <Type>)

What's New in v18.1.3

Layered Options

CodeRush now stores your settings in Layers, which allow you to bind settings to a particular solution and team, in addition to personal preferences which can serve as defaults (unless overridden by team/solution settings) or, if needed, personal settings can override team/solution settings.

You can use this feature to create solution-dependent options and share them with your entire team. These options are applied automatically to all team members using CodeRush when the solution is open.

DevExpress | CodeRush

The actual configuration settings are determined by merging all layers.

DevExpress | CodeRush

There are three pre-defined layers:

  • Solution Personal Options — your personal preferences for the solution that is currently open. This layer has the highest priority and overrides any settings in lower layers.
  • Solution Team Options — your team's preferences. Stored in a solution directory and should be added to your version control system (VCS) so these options can be shared with the entire team. Solution/Team settings override any default settings below.
  • Personal Options — These are your default preferences for all solutions you work with in CodeRush. This layer has the lowest priority and settings here may be overridden by settings in a higher-priority layer.

You can also add child option layers to any pre-defined layer. The custom layers can be stored in any directory and used to specify options not defined in the base layer.

CSS Support

We have added CSS language support in the following features:

DevExpress | CodeRush


The ninst template (generates a new instance for the variable in clipboard) now initializes all properties with the default values.

DevExpress | CodeRush

We have also added a ninst, template (with a comma at the end), which creates a simpler initialization of the variable on the clipboard.

To use either of these templates, copy a variable name to the clipboard, place the caret on an empty line, type the template name and expand it (with Space or Tab, depending on your settings).


Multi-selections are now cleared after being copied.

We have also added the Ctrl+Alt+Shift+Backspace shortcut to restore the most recent multi-selection.

Resolved Issues

  • T630769 - Formatting - Wrap braces options should not take property attributes into account
  • T625870 - General - CodeRush causes sluggish keyboard typing
  • T617308 - General - CodeRush font rendering
  • T628519 - Refactorings - The "Convert to string interpolation" refactoring is not working in specific expressions
  • T627331 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should take "Continue For" into account
  • T627299 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should take "If()-Operator" into account
  • T627293 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should take String.IsNullOrEmpty and String.IsNullOrWhitespace into account
  • T633631 - Test Runner - Cannot run MsTest tests in Visual Studio 15.7
  • T632021 - TestRunner should not run a test marked by the Explicit attribute on running a whole TestFixture
  • T633995 - TypeLoadException in XamlCompilation during work in code-behind file

What's New in v17.2.8

Coding Assistance

Smart Duplicate Selection/Line (Shift+Enter) gets the following improvements:

  • Single letter identifier parts are automatically incremented/decremented if CodeRush detects an alphabetically-ordered pattern in the code.

  • Enhanced support for duplicating parameters and arguments, letting you quickly declare new parameters based on existing parameters and the selection. To duplicate a parameter, select its part(s) you want to change (selected parts becomes fields) and press Shift+Enter. Watch the video below to see examples of what you can do.



  • Expressions can now be duplicated. You can duplicate elements of string concatenation, bitwise, boolean and arithmetic expressions. Smart Duplicate Selection will insert a default operator and mark it with a TextField so you can change it later if needed. Watch the video below for examples of what you can do:

Refactorings and Code Providers

The Invert Selection code provider gets a port from CodeRush Classic. Use this to invert selected lines of code in a variety of ways:

  • Assignments (a = bb = a)
  • Boolean literals (truefalse)
  • Addition/substraction assignments (a += ba -= b)
  • Equality operators (==!=)

DevExpress | CodeRush


We have added the ability to create a template right from your code using a context menu. Select the code to create a template from, right-click and choose Selection to Template...

DevExpress | CodeRush

DevExpress | CodeRush

CodeRush automatically creates Links and Fields based on the selected code and opens the new template in the Template Editor.

Resolved Issues

  • T615463 - Code Providers - Generate Field produces code with a compilation error when the Dim keyword is used
  • T616989 - Duplicate Line doesn't work properly for some statements
  • T617444 - Feature Adviser does not perform cleanup when a document is not in focus
  • T616935 - Formatting incorrectly removes single quotation marks from strings in XAML
  • T618274 - Organize Members - Nested types wrapped into a region are incorrectly processed
  • T615842 - Painting - The drawing of TextFields intersects with regions
  • T614003 - Refactorings - Add Contract->Throws Exception Contract produces invalid code for string arguments
  • T620319 - Selection Expand incorrectly works on regions in Visual Basic
  • T614094 - Templates - The "return" template does not work in VB.NET
  • T614777 - Templates - The r-template breaks code in VB
  • T621181 - Test Runner - CodeRush test result balloon is incorrectly painted with a multi-monitor configuration
  • T618830 - Test Runner disables the "Debug" option for test cases containing the "Inconclusive" assertion
  • T618682 - Test Runner does not run MSTest tests in Visual Studio 15.5.2
  • T621954 - Text Commands - EscapeQuotes does not work in the "To string" selection embedding

What's New in v17.2.7

Feature Advisor

This release introduces Feature Advisor, which introduces CodeRush features likely to improve your coding efficiency based on the ways you create and modify code in the editor.

When CodeRush notices code created or modified in ways which CodeRush features can do faster, it adds an entry to the feature advisor and increments the red and white counter in the bottom right of Visual Studio.

DevExpress | CodeRush

Click this counter to open the Feature Advisor window to learn more about the new CodeRush features that can help.

DevExpress | CodeRush

The Feature Advisor options page shows the full list of features supported by Feature Advisor and lets you disable hinting for features you already know how to use.

DevExpress | CodeRush

Code Formatting

We have added new options to Format statements and blocks after pressing the } and ; keys.

DevExpress | CodeRush

Unit Testing

  • You can now select and copy text from the Test Runner's Results section.

    DevExpress | CodeRush

  • We have added a right-click radio button action to category buttons in the filtering toolbar. When you right-click a filter item, that item becomes the only filter checked.

  • When all filtering items are unchecked, the Test Runner Window shows all tests without filtering.

  • The Test Runner hints shown in the code editor now let you select and copy expected and actual values.

    DevExpress | CodeRush

Member Organization

We have added an option to add an empty line above and below all members organized by CodeRush.

DevExpress | CodeRush

Resolved Issues

  • T605827 - Code Issues - An incorrect line number is shown for issues loaded from Visual Studio
  • T609122 - Formatting - CodeRush reformats code after it is applied for the second time and does not respect formatting options for object initializers
  • T611150 - Formatting - Incorrect comments indention
  • T610051 - Refactorings - "Extract String to Resource" changes a custom tool and paths
  • T607230 - Region Auto Create - #region is misplaced under certain circumstances
  • T608528 - Selection Embedding handles typing the 'c' character even if only a part of the line is selected
  • T609864 - Templates with a dot cannot be expanded
  • T604590 - Test Runner - Duplicates in TestRunner when JS tests are written in TypeScript
  • T607416 - Test Runner - Inherited tests are detected but not executed when a base class is in another assembly and has .NET Standard dependencies
  • T612943 - Test Runner - It is impossible to run MSTests with the Visual Studio's 15.6.0 update
  • T606107 - Test Runner fails to start a MSTest V2 with dynamic data DynamicData

What's New in v17.2.6

Smart Duplicate Selection

Smart Duplicate Line (SDL) gets even smarter and morphs into Smart Duplicate Selection . This feature makes creating structurally-similar code significantly easier and orders of magnitude faster.

This feature can be used in any language Visual Studio supports, however its intelligence and abilities vary depending on the content you're building, so let's go through a few samples to get an idea of what it can do.

First, let's start with some test code that creates a Ninja, like this:

DevExpress | CodeRush

Now I might want to create more Ninjas for the unit test. Normally I would select the block of Ninja-building code, copy it to the clipboard, move the caret to the end of the block, paste the copied code, then navigate through the new code, changing all the parts needed to create my second Ninja.

Phew! That's a lot of work just to create a second Ninja.

Smart Duplicate Selection (SDS) starts the same way - select the code you want to duplicate. But instead of copying anything to the clipboard, just press Shift + Enter to duplicate the selection.

DevExpress | CodeRush

SDS duplicates the selection, placing text fields around the code - parts likely to change in the duplication. Don't worry if you see a lot of text fields when you first try this. We'll show you how to clean this up in a moment. For now, let's focus on the changes we want to make to this block.

For example, I might change the variable name to " ninja2", Name to " Leonardo", ServedInOniwaban to true , and the birth year to 1985 , pressing Enter after each edit (and also on fields I want to leave intact).

It's fast and efficient.

But this feature gets even smarter when you try to duplicate again. Let's create a third Ninja based on the changes we just made .

Now, you could select the second Ninja-building block we just edited, and press Shift + Enter again, and while that would work, it would be an excessive number of key presses just to repeat the last duplication. Forturnately SDS gives you a super-fast way to repeat the last duplication - just press Shift + Enter again when you reach the end of the duplicated selection (or when the caret is inside any text field of the duplication).

Pressing Shift+Enter to repeat the last duplication, we now get something more closely reflecting what we want to modify:

DevExpress | CodeRush

Now we have four fields , surrounding the code we changed in the 'ninja2' declaration. SDS also auto-increments the variable's name (and other numeric primitives and enums ) based on the changes made to the code.

With only four fields we just change or accept what we need, pressing Enter between changes four times.

It's pretty amazing stuff.

Once SDS knows what we want to change, we can repeat it by continuing to press Shift + Enter when we reach the end of the duplicated selection (or when we're inside any TextField of the duplication).

It's the most efficient path to creating similar repeating blocks of code.

You might also be wondering, "well, what if I already know what fields I want to modify?"

This question is best answered in a second example. Let's switch over to XAML, where we might be creating an interface that (so far) looks like this:

DevExpress | CodeRush

This UI shows download progress, but we want to add similar status controls to show progress for installation , configuration , and registration (all of which happen duping our install).

The XAML for the "Download: 0%" part of the UI looks like this:

DevExpress | CodeRush

We've got a horizontal StackPanel containing two TextBlocks, one for the label and the other, named, for the value. So, we need to duplicate this StackPanel and its children three more times. And in each duplication, we want to change only the Text of the label TextBlock and the Name of the value TextBlock.

Since we already know what fields we want to change, we can mark those using CodeRush's multi-select feature. It's easy. Just select the sections of code you want to modify and press Ctrl + Alt + Enter . Like this:

DevExpress | CodeRush

Notice I've only multi-selected one instance of "Download", even though I want to also modify the name of the second occurrence in "tbDownload". That's okay, because SDS will automatically find all camelcase matches to anything we multi-select and link those together in the duplication.

Now it's time to select the block we want to duplicate (tip - for even faster selections, use Selection Increase)...

DevExpress | CodeRush

Press Shift + Enter ...

DevExpress | CodeRush

And now enter the new text for the label: " Installation".

DevExpress | CodeRush

Done. Ready to create another StackPanel/TextBlock set of controls for the "Registration" part of the spec? We're already inside a TextField, so we can use the Shift + Enter shortcut to repeat the last duplication:

DevExpress | CodeRush

Enter the label text: " Registration" and press Shift + Enter again, then enter the " Configuration" label text and press Enter because we're done.

Our interface now looks like this, and includes four properly-named TextBlocks we can easily access from code-behind:

DevExpress | CodeRush

You can also use SDS to duplicate CSS styles, HTML controls, parameters in method declarations, binary expressions, arguments, string constants and entire method blocks. SDS will also remember changes you make in each file and suggest those same changes in similar duplications you perform in the same file.

You can also now dismiss all text fields by pressing the Esc key. This is especially useful for Smart Duplicate Selection because it may generate many text fields on the first duplication, and you can press Escape before or after you've modified the fields you need to change.

Code Formatting

The new Simple Wrap formatting option allows you to configure wrapping of only those line parts that exceed the margin, performing a non-greedy wrapping and adding a minimal number of line breaks.

DevExpress | CodeRush

Unit Testing

  • You can now run unit tests under SciTech Software's .NET Memory Profiler. If this third-party product is installed, you can use the Run Under Memory Profiler option to run tests designed to identify memory leaks and other memory usage issues.

    Note: support for the CodeRush Test Runner is included with the .NET Memory Profiler versions 5.6 and up.

  • CodeRush Test Runner now supports running tests created for the F# language .

Code Analysis

CodeRush Analyzers now appear in the Code Issues Catalog . You can use this options page for the following tasks:

  • Enable/disable specific Code Issues.
  • Add/remove Code Issues to/from Visual Studio's background analysis.
  • Specify the severity of each Code Issue.

DevExpress | CodeRush

Region Creation

The CodeRush Classic's Region Creation feature is now available in CodeRush. Use the Ctrl + 3 shortcut to create a region around the current member or selection instantly.

DevExpress | CodeRush

C# 7 Syntax Support

We are supporting С# 7 syntax in CodeRush features that generate exception-throwing statements (like Throw Exceptions Contract).

Now these CodeRush features generate the specified throw-expression operation if the corresponding preference is set in the Visual Studio settings.

DevExpress | CodeRush

Resolved Issues

  • T602438 - Code Actions - Some items of 'Move Type to Namespace' menu don't react to selection
  • T594730 - Code Cleanup - An unnecessary empty line is inserted at the end of the class declaration
  • T600221 - Code Cleanup - The "Remove unused variable" code cleanup removes the variable used within the collection initializer
  • T596752 - Code Style - "Introduce Using Statement" should respect Programming Style settings
  • T600878 - Code Style - Applying the optional parentheses code style works incorrectly with nullable member access expressions
  • T597981 - Duplicate Line incorrectly works with bit flags enums
  • T598761 - Refactorings - 'Introduce Setter Guard Clause' should be available for INotifyPropertyChanged properties
  • T601944 - Refactorings - The "Rename namespace to match folder structure" refactoring handles namespace references incorrectly
  • T602498 - Refactorings - 'Use string.Format' throws the error and adds multiple items to the light bulb menu
  • T602497 - Smart Duplicate Line Issue
  • T598705 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should not be produced for CType
  • T597731 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should not be produced for GetType
  • T596364 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should not be produced for variables with structure types
  • T597936 - Unit Testing - Code Coverage hang when using CodeRush 17.2.5
  • T588089 - Unit Testing - xunit tests with classes as a data source are not shown in the TestRunner Window

What's New in v17.2.5

Code Style

  • You can now change the default visibility modifier CodeRush uses for generated members.

    DevExpress | CodeRush

    This setting is used by Declaration Providers, Templates and other features that generate new members from scratch.

  • There's a new Code Style option that lets you set preferences for adding clarifying (but optional) parentheses to your code.

    DevExpress | CodeRush

    You can apply these Code Styles with the Code Cleanup feature.

    DevExpress | CodeRush


  • Now you can create new templates based on existing templates. Just right-click the template you want to duplicate (in the Templates options page), and select " Create Duplicate". Enter a new template name, and change the expansion or context as needed.

    DevExpress | CodeRush

  • Now you can easily insert template aliases into your existing templates (allowing templates to insert the contents of the aliased templates into the editor when they expand). Inside the Template Editor, just right-click and choose " Insert Alias...", then specify the name of the template to include. This is useful for sharing the same code expansion between two or more templates.

    DevExpress | CodeRush

  • You can now easily include any type in the CodeRush templates system as a Template Name Variable. Just right-click the type anywhere it appears in the Visual Studio editor and choose Use Type in Templates... .

    DevExpress | CodeRush

    After selecting Use Type in Templates... , CodeRush asks for the shortcut to use for the type.

    DevExpress | CodeRush

    After adding the new type, it will instantly become available in all type-aware templates, including declaration verbs like "m" (for methods), "p" (for properties), "q" for constants, "t" (for types) and "v" (for variables) .

  • We have improved support for new language features in templates and other context-aware features by adding the [InInterpolatedString] context and adding the language version parameter to the [InVisualBasic([version])] and [InCSharp([version])] contexts.

Resolved Issues

  • T587148 - Navigation - Tab to Next Reference should work for C# local functions
  • T587118 - Refactorings - The "Rename Namespace to Match Folder Structure" refactoring produces an incorrect namespace name
  • T566355 - Static Code Analysis - CRR0026 shouldn't be shown for event handler parameters
  • T591682 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic does not take array-assignment into account
  • T588199 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostic does not take into account Me-assignment
  • T591183 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostics do not always take Null-Check into account
  • T590519 - Static Code Analysis - The "Possible System.NullReferenceException" diagnostics incorrectly highlight indexed properties in VB
  • T585952 - Templates - The 'm.' template does not work if a project uses a language version different than C# 7.x
  • T593179 - Test Runner doesn't recognize MSTest DataTestMethod attribute decorated methods as tests