internal static async Task Main() { const string source = @" using System; using System.Collections.Generic; using System.Linq; class C { void M() { } } "; ProjectId projectId = ProjectId.CreateNewId(); Project project = new AdhocWorkspace() .CurrentSolution .AddProject(projectId, "TestProject", "TestProject", LanguageNames.CSharp) .AddMetadataReferences( projectId, new MetadataReference[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location), RuntimeMetadataReference.CreateFromAssemblyName("System.Core.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Linq.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Linq.Expressions.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Runtime.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Collections.Immutable.dll"), RuntimeMetadataReference.CreateFromAssemblyName("Microsoft.CodeAnalysis.dll"), RuntimeMetadataReference.CreateFromAssemblyName("Microsoft.CodeAnalysis.CSharp.dll"), }) .GetProject(projectId); var parseOptions = (CSharpParseOptions)project.ParseOptions; project = project.WithParseOptions(parseOptions.WithLanguageVersion(LanguageVersion.Latest)); DocumentId documentId = DocumentId.CreateNewId(projectId); project = project .Solution .AddDocument(documentId, "Test.cs", SourceText.From(source)) .GetProject(projectId); Document document = project.GetDocument(documentId); SemanticModel semanticModel = await document.GetSemanticModelAsync().ConfigureAwait(false); SyntaxTree tree = await document.GetSyntaxTreeAsync().ConfigureAwait(false); SyntaxNode root = await tree.GetRootAsync().ConfigureAwait(false); string s = document.GetSyntaxRootAsync().Result.ToFullString(); Console.WriteLine(s); Console.ReadKey(); }
protected virtual Project CreateProject() { ProjectId projectId = ProjectId.CreateNewId(debugName: FileUtility.TestProjectName); Project project = new AdhocWorkspace() .CurrentSolution .AddProject(projectId, FileUtility.TestProjectName, FileUtility.TestProjectName, Language) .AddMetadataReferences( projectId, new MetadataReference[] { RuntimeMetadataReference.CorLibReference, RuntimeMetadataReference.CreateFromAssemblyName("System.Core.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Linq.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Linq.Expressions.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Runtime.dll"), RuntimeMetadataReference.CreateFromAssemblyName("System.Collections.Immutable.dll"), RuntimeMetadataReference.CreateFromAssemblyName("Microsoft.CodeAnalysis.dll"), RuntimeMetadataReference.CreateFromAssemblyName("Microsoft.CodeAnalysis.CSharp.dll"), }) .GetProject(projectId); if (Language == LanguageNames.CSharp) { var compilationOptions = (CSharpCompilationOptions)project.CompilationOptions; CSharpCompilationOptions newCompilationOptions = compilationOptions .WithAllowUnsafe(true) .WithOutputKind(OutputKind.DynamicallyLinkedLibrary); var parseOptions = (CSharpParseOptions)project.ParseOptions; CSharpParseOptions newParseOptions = parseOptions .WithLanguageVersion(LanguageVersion.Latest); project = project .WithCompilationOptions(newCompilationOptions) .WithParseOptions(newParseOptions); } return(project); }