Microsoft.CodeAnalysis,重命名器不能重命名或查找类中的所有符号。 netcoreapp2.1,AdhocWorkspace

时间:2018-07-09 09:07:59

标签: asp.net-mvc asp.net-core roslyn microsoft.codeanalysis

我在这里使用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 个答案:

没有答案