public static SyntaxTree Generate( string text, string path, CompilationSettings compilationSettings) { if (text == null) { throw new ArgumentNullException(nameof(text)); } if (path == null) { throw new ArgumentNullException(nameof(path)); } if (compilationSettings == null) { throw new ArgumentNullException(nameof(compilationSettings)); } var sourceText = SourceText.From(text, Encoding.UTF8); var syntaxTree = CSharpSyntaxTree.ParseText(sourceText, path: path, options: GetParseOptions(compilationSettings)); return syntaxTree; }
public static SyntaxTree Generate( string text, string path, CompilationSettings compilationSettings) { if (compilationSettings == null) { throw new ArgumentNullException(nameof(compilationSettings)); } return Generate(text, path, GetParseOptions(compilationSettings)); }
public static CompilationSettings ToCompilationSettings(this ICompilerOptions compilerOptions, FrameworkName targetFramework, string projectDirectory) { var options = GetCompilationOptions(compilerOptions, projectDirectory); // Disable 1702 until roslyn turns this off by default options = options.WithSpecificDiagnosticOptions(new Dictionary <string, ReportDiagnostic> { { "CS1701", ReportDiagnostic.Suppress }, // Binding redirects { "CS1702", ReportDiagnostic.Suppress }, { "CS1705", ReportDiagnostic.Suppress } }); if (RuntimeEnvironmentHelper.IsMono) { options = options.WithConcurrentBuild(concurrentBuild: false); } AssemblyIdentityComparer assemblyIdentityComparer = #if NET451 IsDesktop(targetFramework) ? DesktopAssemblyIdentityComparer.Default : #endif null; options = options.WithAssemblyIdentityComparer(assemblyIdentityComparer); LanguageVersion languageVersion; if (!Enum.TryParse <LanguageVersion>(value: compilerOptions.LanguageVersion, ignoreCase: true, result: out languageVersion)) { languageVersion = LanguageVersion.CSharp6; } var settings = new CompilationSettings { LanguageVersion = languageVersion, Defines = compilerOptions.Defines ?? Enumerable.Empty <string>(), CompilationOptions = options }; return(settings); }
public static CompilationSettings ToCompilationSettings(this ICompilerOptions compilerOptions, FrameworkName targetFramework, string projectDirectory) { var options = GetCompilationOptions(compilerOptions, projectDirectory); // Disable 1702 until roslyn turns this off by default options = options.WithSpecificDiagnosticOptions(new Dictionary<string, ReportDiagnostic> { { "CS1701", ReportDiagnostic.Suppress }, // Binding redirects { "CS1702", ReportDiagnostic.Suppress }, { "CS1705", ReportDiagnostic.Suppress } }); if (RuntimeEnvironmentHelper.IsMono) { options = options.WithConcurrentBuild(concurrentBuild: false); } AssemblyIdentityComparer assemblyIdentityComparer = #if NET451 IsDesktop(targetFramework) ? DesktopAssemblyIdentityComparer.Default : #endif null; options = options.WithAssemblyIdentityComparer(assemblyIdentityComparer); LanguageVersion languageVersion; if (!Enum.TryParse<LanguageVersion>(value: compilerOptions.LanguageVersion, ignoreCase: true, result: out languageVersion)) { languageVersion = LanguageVersion.CSharp6; } var settings = new CompilationSettings { LanguageVersion = languageVersion, Defines = compilerOptions.Defines ?? Enumerable.Empty<string>(), CompilationOptions = options }; return settings; }
public static CSharpParseOptions GetParseOptions(CompilationSettings compilationSettings) { return new CSharpParseOptions( languageVersion: compilationSettings.LanguageVersion, preprocessorSymbols: compilationSettings.Defines); }