Download

The Parallel Checker works in Visual Studio® and VS Code. Please refer to the corresponding section for download and installation instructions.

Instructions for Visual Studio®

You can find the Parallel Checker as a Visual Studio® extension in the Visual Studio® Marketplace. This is the simplest way to install the latest version:

Prerequisites:

  • Visual Studio® 2019 16.8.5 or higher
  • Also supports Visual Studio® 2019 Preview 3.0 (16.9.0) or higher

Notes:

  1. The checker will automatically enable C# full solution analysis. To disable this, go to Tools->Options->Parallel Checker, then set "Automatic full solution analysis" to "false". Subsequently, disable full solution analysis under the options of "Text Editor->Advanced". Reload the solution or restart VS.
  2. Checker information messages (with blue icom) are turned on by default. To deactivate them, go to Tools->Options->Parallel Checker: Set "Diagnostic Checker Information" to false. Reload the solution or restart VS.
  3. If checker messages are not being displayed, please activate full solution analysis manually: Go to menu "Tools->Options", navigate to "Text Editor->C#->Advanced", and select "Entire solution" under "Background analysis scope".

Installation:

  1. In Visual Studio®: Select Tools -> Extensions and Updates...
  2. Select "Online" and search for "Parallel Checker".
  3. Select "Parallel Checker for C# 9 (VS 2019)" and install it.
  4. Restart Visual Studio®.
  5. Open VS studio and open a solution with an empty C# console application project (.NET Core or .NET Framework).
  6. Paste the following code into "Program.cs" that contains a data race:

    using System;
    using System.Threading.Tasks;

    class Program {
      static void Main() {
        int x = 0;
        Task.Run(() => x++);
        Console.Write(x);
      }
    }

  7. Enable information messages with the blue icon to see whether the checker has run. Checker messages will here be listed with a delay of a few seconds. The information messages can be disabled on the checker options (see notes above).
  8. If checker messages are not being displayed, please activate full solution analysis manually: Go to menu "Tools->Options", navigate to "Text Editor->C#->Advanced", and select "Entire solution" under "Background analysis scope".
  9. Get started by trying the samples.

Please read and respect the license terms.

Instructions for VS Code

To use the Parallel Checker in VS Code, you need to integrate the Parallel Checker as a NuGet analyzer package to your C# projects. Once the package is added to the projects, concurrency analysis is triggered and reported within VS Code.

Prerequisites:

  • VS Code 1.50.0 or higher
  • C# language extension in VS Code

Installation:

  1. In VS Code: Install the C# extension, if not yet done.
    • Menu "File"->"Preferences"->"Extensions"
    • Search for "C# for Visual Studio Code (powered by Omnisharp)" and install it.
  2. Enable Roslyn analyzers in the setting
    • Menu "File"->"Preferences"->"Settings"
    • Select "Extensions"->"C# configuration"
    • Go to section "Omnisharp: Enable Roslyn Analyzers"
    • Enable the option "Enable support for roslyn analyzers, code fixes and rulesets."
  3. Add the NuGet package "ConcurrencyLab.ParallelChecker" to the desired C# projects
    • Menu "File"->"Preferences"->"Extensions"
    • Enter "dotnet add package ConcurrencyLab.ParallelChecker"
  4. Checker issues are displayed in the "problems" view and are also highlighted in the code.
    • Menu "View"->"Problems"
    • If issues do not appear: Close and reopen the C# projects, wait for a moment, optionally run the project.

The NuGet package is only intended to perform interactive static analyis inside VS Code. Please read and respect the license terms.

Manual Download

The checker is available for the following Visual Studio® version or as NuGet packages for VS Code:

NuGet analyzer (for VS Code 1.53.0 onwards), Version 1.8, 2021-01-04 Download (nupkg, 253KB)
Visual Studio® 2019 (version 16.8.5 onwards), Version 1.8, 2021-01-04 Download (vsix, 206KB)
NuGet analyzer (for VS Code 1.50.0 onwards), Version 1.7, 2020-10-12 Download (nupkg, 247KB)
Visual Studio® 2019 (version 16.7.5 onwards), Version 1.7, 2020-10-12 Download (vsix, 212KB)
NuGet analyzer (for VS Code 1.45.1 onwards), Version 1.6, 2020-05-23 Download (nupkg, 242KB)
Visual Studio® 2019 (version 16.5 onwards), Version 1.6, 2020-05-23 Download (vsix, 209KB)
Visual Studio® 2019 (version 16.4 onwards), Version 1.5, 2020-02-25 Download (vsix, 208KB)
Visual Studio® 2019 (version 16.0 to 16.4), Version 1.4, 2020-01-20 Download (vsix, 206KB)
Visual Studio® 2019 (version 16.0 onwards, including preview versions), Version 1.3, 2019-10-07 Download (vsix, 202KB)
Visual Studio® 2019 (version 16.0 onwards, including preview versions), Version 1.2, 2019-09-28 Download (vsix, 202KB)
Visual Studio® 2019 (version 16.0 onwards), Version 1.1, 2019-06-28 Download (vsix, 202KB)
Visual Studio® 2017/2019 version 15.9.5 onwards (C# 7.3 downwards), Version 1.0, 2019-01-21 Download (vsix, 199KB)
Visual Studio® 2017 version 15.7.1 onwards (C# 7.3 downwards), Version 0.9, 2018-08-23 Download (vsix, 906KB)
Visual Studio® 2017 Update 5 onwards (C# 7.2 downwards), Version 0.8, 2018-03-06 Download (zip, 896KB)
Visual Studio® 2017 Update 1 onwards (C# 7 downwards), Version 0.7, 2017-03-01 Download (zip, 176KB)
Visual Studio® 2015 onwards (C# 6 downwards), Version 0.7, 2017-03-01 Download (zip, 153KB)

Please read and respect the license terms.

Manual Installation for Visual Studio® (latest Version 1.7):

The following installation steps are necessary for version 0.8 onwards in Visual Studio® (not VS Code):

  1. Download the latest parallel checker release for Visual Studio®.
  2. Double click "ConcurrencyLab.ParallelChecker.vsix" and run the installation program.
  3. Start or restart Visual Studio®.
  4. Open VS studio and open a solution with an empty C# console application project (.NET Core or .NET Framework).
  5. Paste the following code into "Program.cs" that contains a data race:

    using System;
    using System.Threading.Tasks;

    class Program {
      static void Main() {
        int x = 0;
        Task.Run(() => x++);
        Console.Write(x);
      }
    }

  6. Open the "Error List" view. Concurrency errors detected by the parallel checker will here be listed after some delay of a few seconds.
  7. If checker messages are not being displayed, please activate full solution analysis manually: Go to menu "Tools->Options", navigate to "Text Editor->C#->Advanced", and select "Entire solution" under "Background analysis scope".
  8. Optionally, diagnostic checker information can be turned on: Go to Tools->Options->Parallel Checker: Enable "Diagnostic Checker Information".
  9. Get started by trying the samples.

Manual Installation for Visual Studio® (Older Version 0.7):

The following installation steps are necessary for checker version 0.7 in Visual Studio® (not VS Code):

  1. Download and unzip the corresponding parallel checker release for your Visual Studio® version.
  2. Double click "HSR.ParallelChecker.vsix" and run the installation program.
  3. Start or restart Visual Studio®.
  4. IMPORTANT: In Visual Studio®, select the menu Tools -> Options:
    • Select: Text Editor -> C# -> Advanced.
    • For VS 2017 Update 3 onwards, go to section "Analysis", otherwise go to section "Editor help".
    • Check the box "Enable full solution analysis".
  5. Open View->Error List: Messages from the checker will be displayed.
    Check the blue icon in Error List to see the checker information messages.
  6. Play with the samples.

Uninstall in Visual Studio®

  1. Open Visual Studio®.
  2. Menu: Tools -> Extensions and Updates
  3. In the list of installed extensions, select "C# Parallel Checker".
  4. on "Uninstall", confirm with Yes
  5. Restart Visual Studio®.

Known Limitations (Version 1.6)

The checker has certain implementation restrictions that are planned to be addressed in future versions. Currently, it does not analyze the following language features (skips analysis and possibly takes conservative assumptions):

  • yield statement, async iterators (skipped)
  • Specific ASP.NET, WCF, REST concurrency model
  • Various specific API calls
  • Cancellation token
  • Parallel loop break and stop

The list of supported features can be found under documentation.

Help and Contact

If you encounter any problem or if you have any question, please contact us.

Notice: Microsoft, Visual Studio, and Visual Basic are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

All trademarks, trade names etc. are the property of their respective owners.

OST, Parallel Checker, HSR, Concurrency Lab, and the contributors DO NOT have any affiliation with any mentioned trademark holders.