File: AddPackage\AbstractAddSpecificPackageCodeFixProvider.cs
Web Access
Project: src\src\Features\Core\Portable\Microsoft.CodeAnalysis.Features.csproj (Microsoft.CodeAnalysis.Features)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.Packaging;
using Microsoft.CodeAnalysis.SymbolSearch;
 
namespace Microsoft.CodeAnalysis.AddPackage;
 
internal abstract partial class AbstractAddSpecificPackageCodeFixProvider : AbstractAddPackageCodeFixProvider
{
    /// <summary>
    /// Values for these parameters can be provided (during testing) for mocking purposes.
    /// </summary> 
    protected AbstractAddSpecificPackageCodeFixProvider()
    {
    }
 
    protected override bool IncludePrerelease => true;
 
    public override FixAllProvider GetFixAllProvider()
    {
        // Fix All is not supported by this code fix
        // https://github.com/dotnet/roslyn/issues/34458
        return null;
    }
 
    public override async Task RegisterCodeFixesAsync(CodeFixContext context)
    {
        var assemblyName = GetAssemblyName(context.Diagnostics[0].Id);
 
        if (assemblyName != null)
        {
            var assemblyNames = new HashSet<string> { assemblyName };
            var addPackageCodeActions = await GetAddPackagesCodeActionsAsync(context, assemblyNames).ConfigureAwait(false);
            context.RegisterFixes(addPackageCodeActions, context.Diagnostics);
        }
    }
 
    protected abstract string GetAssemblyName(string id);
}