Created
May 30, 2015 16:21
-
-
Save mat-mcloughlin/14655d1050f2978e5576 to your computer and use it in GitHub Desktop.
Roslyn Rename
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public RosylnController() | |
{ | |
_workspace = new AdhocWorkspace(); | |
_project = _workspace.AddProject("AdhocProject", LanguageNames.CSharp); | |
} | |
[Route("rename")] | |
public async Task<string> Post(string buffer, int line, int column, string newName) | |
{ | |
var document = _project.AddDocument("AdhocDocument", SourceText.From(buffer)); | |
var sourceText = await document.GetTextAsync(); | |
var symbolPosition = sourceText.Lines.GetPosition(new LinePosition(line, column)); | |
var symbol = await SymbolFinder.FindSymbolAtPositionAsync(document, symbolPosition); | |
if (symbol != null) | |
{ | |
var newSolution = await Renamer.RenameSymbolAsync(_workspace.CurrentSolution, symbol, newName, _workspace.Options); | |
var solutionChanges = newSolution.GetChanges(_workspace.CurrentSolution); | |
var projectChanges = solutionChanges.GetProjectChanges(); | |
var documentChanges = projectChanges.First().GetChangedDocuments(); | |
var changedDocument = newSolution.GetDocument(documentChanges.First()); | |
var newSourceText = await changedDocument.GetTextAsync(); | |
return newSourceText.ToString(); | |
} | |
return null; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment