コード例 #1
0
ファイル: Program.cs プロジェクト: peteri/Roslynator
        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();
        }
コード例 #2
0
        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);
        }