Microsoft.CodeAnalysis, Renamer не переименовывает или не находит все символы в классе.NETcoreapp2.1, AdhocWorkspace

У меня есть несколько странный пример использования Roslyn и AdhocWorkspace для переименования ссылки на функцию. Прежде всего, я должен начать с объяснения - в этом проекте происходит много переименований, это единственный раз, когда он не работает и выглядит немного аномально. Код ниже, я сделал некоторые ссылки немного более общими для безопасности.

Во-первых, класс со ссылками я пытаюсь переименовать...

public class ApplicationEntity : BaseAggregateRoot
{
    private ApplicationEntity(Guid id) : base(id)
    {
    }

    protected override void RegisterEvents()
    {
        RegisterEvent<ApplicationEntityAdded>(OnApplicationEntityAdded);
    }

    private void OnApplicationEntityAdded(ApplicationEntityAdded args)
    {
        Id = args.AggregateId;
    }
}

Моя функция переименования...

public async Task<AdhocWorkspace> UpdateSymbols(AdhocWorkspace workspace, ProjectId projectId, string oldValue, string newValue)
    {
        var solution = workspace.CurrentSolution;
        var project = solution.GetProject(projectId);
        var compilation = await project.GetCompilationAsync();

        var symbol = compilation.GetSymbolsWithName(s => string.Compare(s, oldValue) == 0, SymbolFilter.All).FirstOrDefault();
        var refs = await SymbolFinder.FindReferencesAsync(symbol, solution);

        if (symbol != null)
        {
            solution = await Renamer.RenameSymbolAsync(solution, symbol, newValue, solution.Workspace.Options);
            var success = workspace.TryApplyChanges(solution);
            solution = workspace.CurrentSolution;
        }

        return workspace;
    }

... и мой призыв в это...

workspace = await adhocWorkplaceManager.UpdateSymbols(workspace, currentProject.Id, "OnApplicationEntityAdded", $"On{name}Added");
                solution = workspace.CurrentSolution;

Я пытаюсь переименовать функцию OnApplicationEntityAdded. Код переименовывает саму функцию, но не ссылку на нее в функции RegisterEvents. Когда я захожу в сам файл и меняю имя обратно, Roslyn / Intellisense может видеть, что они связаны, есть что-то, что я пропускаю? Это потенциально проблема с AdhocWorkspace? Весь проект создается, и все файлы и ссылки на проекты добавляются в рабочую область правильно, я даже пытался сделать все ссылки общедоступными.

Дайте мне знать, если что-то нужно уточнить. Framework .NET Core 2.1, по-видимому, пока не является для него тегом

0 ответов

Другие вопросы по тегам