Ejemplo n.º 1
0
 protected CSharp.CSharpCompilation CreateCSharpCompilation(
     string code,
     CSharp.CSharpParseOptions parseOptions             = null,
     CSharp.CSharpCompilationOptions compilationOptions = null,
     string assemblyName = null,
     IEnumerable <MetadataReference> referencedAssemblies = null)
 {
     return(CreateCSharpCompilation(assemblyName, code, parseOptions, compilationOptions, referencedAssemblies, referencedCompilations: null));
 }
Ejemplo n.º 2
0
        protected CSharp.CSharpCompilation CreateCSharpCompilation(
            string assemblyName,
            string code,
            CSharp.CSharpParseOptions parseOptions               = null,
            CSharp.CSharpCompilationOptions compilationOptions   = null,
            IEnumerable <MetadataReference> referencedAssemblies = null,
            IEnumerable <Compilation> referencedCompilations     = null
            )
        {
            if (assemblyName == null)
            {
                assemblyName = GetUniqueName();
            }

            if (parseOptions == null)
            {
                parseOptions = CSharp.CSharpParseOptions.Default
                               .WithLanguageVersion(CSharp.LanguageVersion.Default)
                               .WithDocumentationMode(DocumentationMode.None);
            }

            if (compilationOptions == null)
            {
                compilationOptions = new CSharp.CSharpCompilationOptions(
                    OutputKind.DynamicallyLinkedLibrary
                    );
            }

            var references = new List <MetadataReference>();

            if (referencedAssemblies == null)
            {
                references.Add(MscorlibRef);
                references.Add(SystemRef);
                references.Add(SystemCoreRef);
                //TODO: references.Add(MsCSRef);
                references.Add(SystemXmlRef);
                references.Add(SystemXmlLinqRef);
            }
            else
            {
                references.AddRange(referencedAssemblies);
            }

            AddReferencedCompilations(referencedCompilations, references);

            var tree = CSharp.SyntaxFactory.ParseSyntaxTree(code, options: parseOptions);

            return(CSharp.CSharpCompilation.Create(
                       assemblyName,
                       new[] { tree },
                       references,
                       compilationOptions
                       ));
        }