private IList <SyntaxTree> GetSyntaxTrees(Project project, CompilationSettings compilationSettings, IEnumerable <ISourceReference> sourceReferences) { var trees = new List <SyntaxTree>(); var parseOptions = new CSharpParseOptions(languageVersion: compilationSettings.LanguageVersion, preprocessorSymbols: compilationSettings.Defines.AsImmutable()); foreach (var sourcePath in project.SourceFiles) { _watcher.WatchFile(sourcePath); var syntaxTree = CreateSyntaxTree(sourcePath, parseOptions); trees.Add(syntaxTree); } foreach (var sourceFileReference in sourceReferences.OfType <ISourceFileReference>()) { var sourcePath = sourceFileReference.Path; _watcher.WatchFile(sourcePath); var syntaxTree = CreateSyntaxTree(sourcePath, parseOptions); trees.Add(syntaxTree); } return(trees); }
public static CompilationSettings GetCompilationSettings(this Project project, FrameworkName targetFramework, string configuration) { // Get all project options and combine them var rootOptions = project.GetCompilerOptions(); var configurationOptions = project.GetCompilerOptions(configuration); var targetFrameworkOptions = project.GetCompilerOptions(targetFramework); // Combine all of the options var resultOptions = CompilerOptions.Combine(rootOptions, configurationOptions, targetFrameworkOptions); var options = GetCompilationOptions(resultOptions); // Disable 1702 until roslyn turns this off by default options = options.WithSpecificDiagnosticOptions(new Dictionary <string, ReportDiagnostic> { { "CS1702", ReportDiagnostic.Suppress }, { "CS1705", ReportDiagnostic.Suppress } }); if (PlatformHelper.IsMono) { options = options.WithConcurrentBuild(concurrentBuild: false); } AssemblyIdentityComparer assemblyIdentityComparer = #if ASPNET50 VersionUtility.IsDesktop(targetFramework) ? DesktopAssemblyIdentityComparer.Default : #endif null; options = options.WithAssemblyIdentityComparer(assemblyIdentityComparer); LanguageVersion languageVersion; if (!Enum.TryParse <LanguageVersion>(value: resultOptions.LanguageVersion, ignoreCase: true, result: out languageVersion)) { languageVersion = LanguageVersion.CSharp6; } var settings = new CompilationSettings { LanguageVersion = languageVersion, Defines = resultOptions.Defines ?? Enumerable.Empty <string>(), CompilationOptions = options }; return(settings); }
public static CompilationSettings ToCompilationSettings(this ICompilerOptions compilerOptions, FrameworkName targetFramework) { var options = GetCompilationOptions(compilerOptions); // 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 DNX451 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) { var options = GetCompilationOptions(compilerOptions); // 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 DNX451 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); }