public void Test_WorkspaceChanges() { var workspace = new TestWorkspace(); var solution = workspace.CurrentSolution; var project1 = workspace.AddProject("P1"); var graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result; var project2 = workspace.AddProject("P2"); graph = ProjectDependencyService.GetDependencyGraphAsync(workspace.CurrentSolution, CancellationToken.None).Result; var sortedProjects = graph.GetTopologicallySortedProjects(); AssertEx.SetEqual(sortedProjects, project1, project2); Project ps = workspace.CurrentSolution.GetProject(project1); int startCount = ps.MetadataReferences.Count; var source2 = @" using System; public class X { } "; MetadataReference comp1 = CreateCSharpCompilation(source2).ToMetadataReference(); workspace.OnMetadataReferenceAdded(project1, comp1); workspace.OnAssemblyNameChanged(project1, "ChangedP1"); Assert.False(ps.CompilationOptions.CheckOverflow); CompilationOptions co = new CSharp.CSharpCompilationOptions(outputKind: OutputKind.DynamicallyLinkedLibrary, checkOverflow: true); workspace.OnCompilationOptionsChanged(project1, co); ps = workspace.CurrentSolution.GetProject(project1); Assert.Equal(startCount + 1, ps.MetadataReferences.Count); Assert.Equal(ps.AssemblyName, "ChangedP1"); Assert.True(ps.CompilationOptions.CheckOverflow); }
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)); }
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 )); }
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.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); }
public void ConsistentParseOptions() { var tree1 = SyntaxFactory.ParseSyntaxTree("", CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp6)); var tree2 = SyntaxFactory.ParseSyntaxTree("", CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp6)); var tree3 = SyntaxFactory.ParseSyntaxTree("", CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp5)); var assemblyName = GetUniqueName(); var compilationOptions = new CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary); CSharp.CSharpCompilation.Create(assemblyName, new[] { tree1, tree2 }, new[] { MscorlibRef }, compilationOptions); Assert.Throws(typeof(ArgumentException), () => { CSharp.CSharpCompilation.Create(assemblyName, new[] { tree1, tree3 }, new[] { MscorlibRef }, compilationOptions); }); }