Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ jobs:
dotnet-version: |
8.0.x
9.0.x
10.0.x
- run: dotnet tool install -g GitVersion.Tool --version 5.11.1
- name: Resolve version
id: version
Expand Down Expand Up @@ -126,6 +127,8 @@ jobs:
- run: dotnet build --no-restore /p:Roslynator${{ matrix.component.propertyName }}NuGet=true /p:RoslynVersion=roslyn3.8
- run: dotnet restore --force /p:RoslynVersion=roslyn4.7
- run: dotnet build --no-restore /p:Roslynator${{ matrix.component.propertyName }}NuGet=true /p:RoslynVersion=roslyn4.7
- run: dotnet restore --force /p:RoslynVersion=roslyn5.0
- run: dotnet build --no-restore /p:Roslynator${{ matrix.component.propertyName }}NuGet=true /p:RoslynVersion=roslyn5.0
- run: dotnet pack --no-build
- uses: actions/upload-artifact@v4
with:
Expand All @@ -147,6 +150,8 @@ jobs:
- run: dotnet build --no-restore /p:RoslynatorRefactoringsNuGet=true /p:RoslynVersion=roslyn3.8
- run: dotnet restore --force /p:RoslynVersion=roslyn4.7
- run: dotnet build --no-restore /p:RoslynatorRefactoringsNuGet=true /p:RoslynVersion=roslyn4.7
- run: dotnet restore --force /p:RoslynVersion=roslyn5.0
- run: dotnet build --no-restore /p:RoslynatorRefactoringsNuGet=true /p:RoslynVersion=roslyn5.0
- run: dotnet pack --no-build
- uses: actions/upload-artifact@v4
with:
Expand All @@ -168,6 +173,8 @@ jobs:
- run: dotnet build --no-restore /p:RoslynatorCodeFixesNuGet=true /p:RoslynVersion=roslyn3.8
- run: dotnet restore --force /p:RoslynVersion=roslyn4.7
- run: dotnet build --no-restore /p:RoslynatorCodeFixesNuGet=true /p:RoslynVersion=roslyn4.7
- run: dotnet restore --force /p:RoslynVersion=roslyn5.0
- run: dotnet build --no-restore /p:RoslynatorCodeFixesNuGet=true /p:RoslynVersion=roslyn5.0
- run: dotnet pack --no-build
- uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -210,7 +217,7 @@ jobs:

build_vs_code_extension:
if: github.ref_type != 'tag' || startsWith(github.ref_name, 'v')
needs: [ pre_build, build_analyzers ]
needs: [ pre_build ]
runs-on: ubuntu-24.04
env:
Version: ${{ needs.pre_build.outputs.version }}
Expand All @@ -222,7 +229,6 @@ jobs:
- run: dotnet restore
- run: dotnet build --no-restore
- run: |
mkdir package/roslyn/analyzers
mkdir package/roslyn/refactorings
mkdir package/roslyn/fixes
cp bin/Release/netstandard2.0/Roslynator.Core.dll package/roslyn/common
Expand All @@ -231,10 +237,6 @@ jobs:
cp bin/Release/netstandard2.0/Roslynator.Workspaces.Core.dll package/roslyn/common
cp bin/Release/netstandard2.0/Roslynator.Workspaces.Common.dll package/roslyn/common
cp bin/Release/netstandard2.0/Roslynator.CSharp.Workspaces.dll package/roslyn/common
cp bin/Release/netstandard2.0/Roslynator.CSharp.Analyzers.dll package/roslyn/analyzers
cp bin/Release/netstandard2.0/Roslynator.CSharp.Analyzers.CodeFixes.dll package/roslyn/analyzers
cp bin/Release/netstandard2.0/Roslynator.Formatting.Analyzers.dll package/roslyn/analyzers
cp bin/Release/netstandard2.0/Roslynator.Formatting.Analyzers.CodeFixes.dll package/roslyn/analyzers
cp bin/Release/netstandard2.0/Roslynator.CSharp.Refactorings.dll package/roslyn/refactorings
cp bin/Release/netstandard2.0/Roslynator.CSharp.CodeFixes.dll package/roslyn/fixes
name: Copy DLLs to package
Expand Down
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- Add `roslyn5.0` NuGet package flavor (`analyzers/dotnet/roslyn5.0/cs`) ([PR](https://github.com/dotnet/roslynator/pull/1787))

### Changed

- Bump Roslyn to 5.0.0 ([PR](https://github.com/dotnet/roslynator/pull/1787))
- CLI and testing library target Roslyn 5.0.0
- Solution build and tests use Roslyn 5.0.0 by default
- Replace Visual Studio 2022 extension with **Roslynator 2026** for Visual Studio 2026 (`[18.0,19.0)`) ([PR](https://github.com/dotnet/roslynator/pull/1787))
- Extension ships refactorings and compiler diagnostic code fixes; analyzers via NuGet
- [Roslynator 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022) remains available as the last 4.x VSIX
- Visual Studio Code extension ships refactorings and compiler diagnostic code fixes only ([PR](https://github.com/dotnet/roslynator/pull/1787))
- Analyzers require Roslynator NuGet packages
- Requires OmniSharp with Roslyn 5.x (C# extension 1.39.15+; set `dotnet.server.useOmnisharp` to `true`)

### Removed

- Remove bundled analyzers from Visual Studio extension ([PR](https://github.com/dotnet/roslynator/pull/1787))
- Use [Roslynator.Analyzers](https://www.nuget.org/packages/roslynator.analyzers) NuGet package for diagnostics
- Remove bundled analyzers from Visual Studio Code extension ([PR](https://github.com/dotnet/roslynator/pull/1787))
- Use Roslynator NuGet packages for diagnostics
- Remove `AnalyzersOptionsPage` from Visual Studio extension ([PR](https://github.com/dotnet/roslynator/pull/1787))
- Drop support for Visual Studio 2022 VSIX ([PR](https://github.com/dotnet/roslynator/pull/1787))
- Pin last 4.x release ([Roslynator 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)) or use NuGet packages on Visual Studio 2022

## [4.16.1] - 2026-08-16

### Fixed
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

Roslynator is a set of code analysis tools for C#, powered by [Roslyn](https://github.com/dotnet/roslyn).

IMPORTANT: Analyzers will be removed from Roslynator IDE extensions in the next major release.
Use Roslynator NuGet packages instead (for example, [Roslynator.Analyzers](https://www.nuget.org/packages/roslynator.analyzers)).
Analyzers are not included in Roslynator IDE extensions. Use Roslynator NuGet packages (e.g. [Roslynator.Analyzers](https://www.nuget.org/packages/roslynator.analyzers)) for diagnostics.

## Tools

- IDE extensions for:
- [Visual Studio](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
- [VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
- Requires OmniSharp. With C# Dev Kit, use NuGet packages for analyzers, refactorings, and code fixes.
- [Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026) (refactorings and compiler diagnostic fixes; analyzers via NuGet)
- [Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022) (last 4.x release; pin or use NuGet packages)
- [VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator) (refactorings and compiler diagnostic fixes; analyzers via NuGet)
- Requires legacy OmniSharp (`dotnet.server.useOmnisharp`: `true`). With C# Dev Kit, use NuGet packages instead.
- [Open VSX](https://open-vsx.org/extension/josefpihrt-vscode/roslynator)
- [NuGet packages](#nuget-packages) that contain a collection of analyzers
- [Roslynator.Analyzers](https://www.nuget.org/packages/Roslynator.Analyzers)
Expand Down
10 changes: 5 additions & 5 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ Any vulnerabilities that affect older versions will be considered on a case-by-c

| Version | Supported |
| ------- |:------------------:|
| 4.x | :white_check_mark: |
| 5.x | :white_check_mark: |
| CLI 0.x | :white_check_mark: |
| Extension for VS 2022 | :white_check_mark: |
| Extension for VS 2026 | :white_check_mark: |
| Extension for VS Code | :white_check_mark: |

## Out of Support Versions

| Version | Supported |
| ------- |:---------:|
| < 4.0 | :x: |
| Extension for VS 2019 and older | :x: |
| < 5.0 | :x: |
| Extension for VS 2022 and older | :x: |

## Reporting a Vulnerability

Please report (suspected) security vulnerabilities to GitHub [issues](https://github.com/dotnet/roslynator/issues/new).
Once confirmed, we will release a patch as soon as possible.
Once confirmed, we will release a patch as soon as possible.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Roslynator.CodeFixes;
using Roslynator.CSharp;

namespace Roslynator.CSharp.CodeFixes;

Expand Down Expand Up @@ -75,7 +76,7 @@ public override async Task RegisterCodeFixesAsync(CodeFixContext context)

TypeSyntax type = declarationExpression.Type;

var localSymbol = semanticModel.GetDeclaredSymbol(declarationExpression.Designation, context.CancellationToken) as ILocalSymbol;
ILocalSymbol localSymbol = semanticModel.GetDeclaredLocalSymbol(declarationExpression.Designation, context.CancellationToken);

ITypeSymbol typeSymbol = (localSymbol?.Type) ?? semanticModel.GetTypeSymbol(declarationExpression, context.CancellationToken);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Roslynator.CodeFixes;
using Roslynator.CSharp;
using static Roslynator.CSharp.CodeActionFactory;

namespace Roslynator.CSharp.CodeFixes;
Expand Down Expand Up @@ -126,7 +127,7 @@ public override async Task RegisterCodeFixesAsync(CodeFixContext context)

if (typeSymbol is null)
{
var localSymbol = semanticModel.GetDeclaredSymbol(declarationExpression.Designation, context.CancellationToken) as ILocalSymbol;
ILocalSymbol localSymbol = semanticModel.GetDeclaredLocalSymbol(declarationExpression.Designation, context.CancellationToken);
typeSymbol = (localSymbol?.Type) ?? semanticModel.GetTypeSymbol(declarationExpression, context.CancellationToken);
}

Expand Down
1 change: 1 addition & 0 deletions src/Analyzers.CodeFixes/Roslynator.Analyzers.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<files>
<file src="bin\roslyn3.8\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn3.8/cs" />
<file src="bin\roslyn4.7\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn4.7/cs" />
<file src="bin\roslyn5.0\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn5.0/cs" />
<file src="tools\*.ps1" target="tools\" />
<file src="..\..\images\roslynator-logo-small.png" target="icon.png" />
<file src="docs\NuGetReadme.md" target="docs\README.md" />
Expand Down
3 changes: 2 additions & 1 deletion src/Analyzers.CodeFixes/docs/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ A collection of 200+ [analyzers](https://josefpihrt.github.io/docs/roslynator/an

## Requirements

* Visual Studio 2022
* Visual Studio 2022 or 2026
* VS Code with [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) extension 1.21.13 or higher
* Roslyn 3.8.0 or higher (when used directly, not as part of an IDE)

Expand All @@ -24,6 +24,7 @@ A collection of 200+ [analyzers](https://josefpihrt.github.io/docs/roslynator/an

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Command-line Tool](https://www.nuget.org/packages/Roslynator.DotNet.Cli)
Expand Down
1 change: 1 addition & 0 deletions src/Analyzers/Analyzers.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<PackageId>Analyzers</PackageId>
<IsPackable>false</IsPackable>
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
<NoWarn>$(NoWarn);RS1038</NoWarn>
</PropertyGroup>

<ItemGroup>
Expand Down
1 change: 1 addition & 0 deletions src/CSharp.Workspaces/docs/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This package extends the functionality of the [Microsoft.CodeAnalysis.CSharp.Wor

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Command-line Tool](https://www.nuget.org/packages/Roslynator.DotNet.Cli)
Expand Down
2 changes: 1 addition & 1 deletion src/CSharp/CSharp/CSharpTypeAnalysis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ public static bool IsImplicitThatCanBeExplicit(

bool IsLocalThatSupportsExplicitDeclaration(VariableDesignationSyntax variableDesignation)
{
if (semanticModel.GetDeclaredSymbol(variableDesignation, cancellationToken) is not ILocalSymbol localSymbol)
if (semanticModel.GetDeclaredLocalSymbol(variableDesignation, cancellationToken) is not ILocalSymbol localSymbol)
return false;

ITypeSymbol typeSymbol = localSymbol.Type;
Expand Down
11 changes: 11 additions & 0 deletions src/CSharp/CSharp/Extensions/CSharpExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,17 @@ public static class CSharpExtensions
return (IMethodSymbol?)ModelExtensions.GetDeclaredSymbol(semanticModel, localFunction, cancellationToken);
}

internal static ILocalSymbol? GetDeclaredLocalSymbol(
this SemanticModel semanticModel,
VariableDesignationSyntax designation,
CancellationToken cancellationToken = default)
{
if (designation is SingleVariableDesignationSyntax singleVariableDesignation)
return (ILocalSymbol?)semanticModel.GetDeclaredSymbol(singleVariableDesignation, cancellationToken);

return null;
Comment thread
josefpihrt marked this conversation as resolved.
}

/// <summary>
/// Returns what symbol, if any, the specified attribute syntax bound to.
/// </summary>
Expand Down
1 change: 1 addition & 0 deletions src/CSharp/docs/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This package extends the functionality of the [Microsoft.CodeAnalysis.CSharp](ht

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Command-line Tool](https://www.nuget.org/packages/Roslynator.DotNet.Cli)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<files>
<file src="bin\roslyn3.8\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn3.8/cs" />
<file src="bin\roslyn4.7\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn4.7/cs" />
<file src="bin\roslyn5.0\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn5.0/cs" />
<file src="tools\*.ps1" target="tools\" />
<file src="..\..\images\roslynator-logo-small.png" target="icon.png" />
<file src="docs\NuGetReadme.md" target="docs\README.md" />
Expand Down
3 changes: 2 additions & 1 deletion src/CodeAnalysis.Analyzers.CodeFixes/docs/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Use this package for projects that reference Roslyn (`Microsoft.CodeAnalysis*`)

## Requirements

* Visual Studio 2022
* Visual Studio 2022 or 2026
* VS Code with [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) extension 1.21.13 or higher
* Roslyn 3.8.0 or higher (when used directly, not as part of an IDE)

Expand All @@ -26,6 +26,7 @@ Use this package for projects that reference Roslyn (`Microsoft.CodeAnalysis*`)

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Command-line Tool](https://www.nuget.org/packages/Roslynator.DotNet.Cli)
Expand Down
1 change: 1 addition & 0 deletions src/CodeFixes/Roslynator.CodeFixes.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<files>
<file src="bin\roslyn3.8\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn3.8/cs" />
<file src="bin\roslyn4.7\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn4.7/cs" />
<file src="bin\roslyn5.0\$Configuration$\netstandard2.0\Roslynator*.dll" target="analyzers/dotnet/roslyn5.0/cs" />
<file src="tools\*.ps1" target="tools\" />
<file src="..\..\images\roslynator-logo-small.png" target="icon.png" />
<file src="docs\NuGetReadme.md" target="docs\README.md" />
Expand Down
3 changes: 2 additions & 1 deletion src/CodeFixes/docs/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Otherwise, use the IDE extension instead.

## Requirements

* Visual Studio 2022
* Visual Studio 2022 or 2026
* VS Code with [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) extension 1.21.13 or higher
* Roslyn 3.8.0 or higher (when used directly, not as part of an IDE)

Expand All @@ -27,6 +27,7 @@ Otherwise, use the IDE extension instead.

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Command-line Tool](https://www.nuget.org/packages/Roslynator.DotNet.Cli)
Expand Down
4 changes: 3 additions & 1 deletion src/CommandLine/CommandLine.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
<NuGetAuditSuppress Include="https://github.com/advisories/GHSA-hh2w-p6rv-4g7w" />
<!-- Package 'Microsoft.Build.Tasks.Core' 17.7.2 has a known high severity vulnerability -->
<NuGetAuditSuppress Include="https://github.com/advisories/GHSA-h4j7-5rxr-p4wc" />
<!-- Package 'Microsoft.Build' 17.11.31 has a known high severity vulnerability -->
<NuGetAuditSuppress Include="https://github.com/advisories/GHSA-w3q9-fxm7-j8fq" />
</ItemGroup>

<!--
Expand All @@ -77,7 +79,7 @@
a single version across all target frameworks instead would downgrade deployed dependencies
of these packages, such as System.Reflection.MetadataLoadContext.
-->
<RoslynatorMSBuildVersion Condition="'$(TargetFramework)' == 'net8.0'">17.7.2</RoslynatorMSBuildVersion>
<RoslynatorMSBuildVersion Condition="'$(TargetFramework)' == 'net8.0'">17.11.31</RoslynatorMSBuildVersion>
<RoslynatorMSBuildVersion Condition="'$(TargetFramework)' == 'net9.0'">17.14.28</RoslynatorMSBuildVersion>
<RoslynatorMSBuildVersion Condition="'$(TargetFramework)' == 'net10.0'">18.0.2</RoslynatorMSBuildVersion>
<!--
Expand Down
2 changes: 1 addition & 1 deletion src/CommandLine/Commands/MSBuildWorkspaceCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public async Task<CommandStatus> ExecuteAsync(IEnumerable<PathInfo> paths, strin
if (workspace is null)
return CommandStatus.Fail;

workspace.WorkspaceFailed += (sender, args) => WorkspaceFailed(sender, args);
using IDisposable workspaceFailedSubscription = workspace.RegisterWorkspaceFailedHandler(args => WorkspaceFailed(workspace, args));

using var cts = new CancellationTokenSource();
Console.CancelKeyPress += (sender, e) =>
Expand Down
1 change: 1 addition & 0 deletions src/CommandLine/docs/NetCore/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ See the [CLI documentation](https://josefpihrt.github.io/docs/roslynator/cli) fo

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Testing Framework](https://www.nuget.org/packages/Roslynator.Testing.CSharp.Xunit)
1 change: 1 addition & 0 deletions src/CommandLine/docs/NetFramework/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ See the [CLI documentation](https://josefpihrt.github.io/docs/roslynator/cli) fo

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Testing Framework](https://www.nuget.org/packages/Roslynator.Testing.CSharp.Xunit)
1 change: 1 addition & 0 deletions src/Core/docs/NuGetReadme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This package extends the functionality of the [Microsoft.CodeAnalysis.Common](ht

## Related Products

* [Roslynator for Visual Studio 2026](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2026)
* [Roslynator for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2022)
* [Roslynator for VS Code](https://marketplace.visualstudio.com/items?itemName=josefpihrt-vscode.roslynator)
* [Roslynator Command-line Tool](https://www.nuget.org/packages/Roslynator.DotNet.Cli)
Expand Down
Loading
Loading