private void Do(string path) { // This is so meta! var workspace = new ProjectJsonWorkspace(path); var thisDocument = workspace.CurrentSolution.GetDocumentIdsWithFilePath(Path.Combine(path, "Program.cs")).First(); var project = workspace.CurrentSolution.GetProject(thisDocument.ProjectId); var program = project.GetCompilationAsync().Result.Assembly.GetTypeByMetadataName("Program"); Console.WriteLine(program.GetDocumentationCommentXml()); }
private static void CompileProject(CompilerOptions options) { Project project; Workspace workspace; var handlebarsFiles = new List<string>(); if (options.JSONProject) { workspace = new ProjectJsonWorkspace(options.ProjectFile); project = workspace.CurrentSolution.Projects.First(); handlebarsFiles.AddRange(ScrapeDirectoryForHandlebarsFiles(new DirectoryInfo(Path.GetDirectoryName(project.FilePath)), options)); } else {//Old project files. Accessible via MSBuildWorkspace var properties = new Dictionary<string, string>() { { "AdditionalFileItemNames", "none" }}; workspace = MSBuildWorkspace.Create(properties); project = (workspace as MSBuildWorkspace).OpenProjectAsync(options.ProjectFile).Result; handlebarsFiles.AddRange(project.AdditionalDocuments.Where(x => Path.GetExtension(x.FilePath).Equals(".hbs")).Select(x => x.FilePath)); } CompileHandlebarsFiles(project, workspace, handlebarsFiles, options); }