public void UseServices() { var source = @"using System.Diagnostics; using System; using System.IO; namespace NS { public class C { } } class Program { public static void Main() { System.Int32 i = 0; System.Console.WriteLine(i.ToString()); Process p = Process.GetCurrentProcess(); Console.WriteLine(p.Id); } }"; var projectId = ProjectId.CreateNewId(); var documentId = DocumentId.CreateNewId(projectId); var solution = new AdhocWorkspace().CurrentSolution .AddProject(projectId, "MyProject", "MyProject", LanguageNames.CSharp) .AddMetadataReference(projectId, Mscorlib) .AddMetadataReference(projectId, AppDomain.CurrentDomain.GetAssemblies() .Where(a => string.Compare(a.GetName().Name, "System", StringComparison.OrdinalIgnoreCase) == 0) .Select(a => MetadataReference.CreateFromFile(a.Location)).Single()) .AddDocument(documentId, "MyFile.cs", source); var document = solution.GetDocument(documentId); // Format the document. document = Formatter.FormatAsync(document).Result; Assert.Equal(@"using System.Diagnostics; using System; using System.IO; namespace NS { public class C { } } class Program { public static void Main() { System.Int32 i = 0; System.Console.WriteLine(i.ToString()); Process p = Process.GetCurrentProcess(); Console.WriteLine(p.Id); } }", document.GetSyntaxRootAsync().Result.ToString()); // Simplify names used in the document i.e. remove unnecessary namespace qualifiers. var newRoot = (SyntaxNode)document.GetSyntaxRootAsync().Result; newRoot = new SimplifyNamesAnnotionRewriter().Visit(newRoot); document = document.WithSyntaxRoot(newRoot); document = Simplifier.ReduceAsync(document).Result; Assert.Equal(@"using System.Diagnostics; using System; using System.IO; namespace NS { public class C { } } class Program { public static void Main() { int i = 0; Console.WriteLine(i.ToString()); Process p = Process.GetCurrentProcess(); Console.WriteLine(p.Id); } }", document.GetSyntaxRootAsync().Result.ToString()); }
public static string Simplify(SyntaxNode node) { var source = node.ToString(); var projectId = ProjectId.CreateNewId(); var documentId = DocumentId.CreateNewId(projectId); var solution = new CustomWorkspace().CurrentSolution .AddProject(projectId, "MyProject", "MyProject", LanguageNames.CSharp) .AddMetadataReference(projectId, RoslynRDomUtilities.Mscorlib) .AddMetadataReference(projectId, AppDomain.CurrentDomain.GetAssemblies() .Where(a => string.Compare(a.GetName().Name, "System", StringComparison.OrdinalIgnoreCase) == 0) .Select(a => new MetadataFileReference(a.Location)).Single()) .AddDocument(documentId, "MyFile.cs", source); var document = solution.GetDocument(documentId); // Format the document. document = Formatter.FormatAsync(document).Result; // Simplify names used in the document i.e. remove unnecessary namespace qualifiers. var newRoot = (SyntaxNode)document.GetSyntaxRootAsync().Result; newRoot = new SimplifyNamesAnnotionRewriter().Visit(newRoot); document = document.WithSyntaxRoot(newRoot); document = Simplifier.ReduceAsync(document).Result; var ret = document.GetSyntaxRootAsync().Result.ToString(); return ret; }