Example #1
0
        public void SomeOtherTest()
        {
            if(File.Exists(@"c:\temp\MyCompilation.dll"))
                return;

            var tree = CSharpSyntaxTree.ParseFile("Roslyn/FurnaceItem.cs");
            var oldRoot = tree.GetRoot();
            var rewriter = new BaseClassInserter("TestClass");
            var newRoot = rewriter.Visit(oldRoot);
            newRoot = newRoot.NormalizeWhitespace(); // fix up the whitespace so it is legible.

            System.Console.WriteLine(newRoot.ToFullString());

            var newTree = SyntaxFactory.SyntaxTree(newRoot);
            var compilation = CSharpCompilation.Create("MyCompilation")
                .AddSyntaxTrees(newTree)
                .AddReferences(new MetadataFileReference(typeof(object).Assembly.Location))
                .AddReferences(new MetadataFileReference(typeof(FurnaceItem).Assembly.Location))
                .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            using (var file = new FileStream(@"c:\temp\MyCompilation.dll", FileMode.Create))
            {
                var result = compilation.Emit(file);

                Assert.That(result.Diagnostics, Is.Empty);
            }
        }
Example #2
0
        public void LoadAssemblyFromMemory()
        {
            var tree     = CSharpSyntaxTree.ParseFile("Roslyn/FurnaceItem.cs");
            var oldRoot  = tree.GetRoot();
            var rewriter = new BaseClassInserter("TestClass");
            var newRoot  = rewriter.Visit(oldRoot);

            newRoot = newRoot.NormalizeWhitespace(); // fix up the whitespace so it is legible.

            System.Console.WriteLine(newRoot.ToFullString());

            var newTree     = SyntaxFactory.SyntaxTree(newRoot);
            var compilation = CSharpCompilation.Create("MyCompilation")
                              .AddSyntaxTrees(newTree)
                              .AddReferences(new MetadataFileReference(typeof(object).Assembly.Location))
                              .AddReferences(new MetadataFileReference(typeof(FurnaceItem).Assembly.Location))
                              .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            Assembly assembly = null;

            using (var memStream = new MemoryStream())
            {
                compilation.Emit(memStream);
                memStream.Flush();
                assembly = Assembly.Load(memStream.GetBuffer());
            }
        }
Example #3
0
        public void LoadAssemblyFromMemory()
        {
            var tree = CSharpSyntaxTree.ParseFile("Roslyn/FurnaceItem.cs");
            var oldRoot = tree.GetRoot();
            var rewriter = new BaseClassInserter("TestClass");
            var newRoot = rewriter.Visit(oldRoot);
            newRoot = newRoot.NormalizeWhitespace(); // fix up the whitespace so it is legible.

            System.Console.WriteLine(newRoot.ToFullString());

            var newTree = SyntaxFactory.SyntaxTree(newRoot);
            var compilation = CSharpCompilation.Create("MyCompilation")
                .AddSyntaxTrees(newTree)
                .AddReferences(new MetadataFileReference(typeof(object).Assembly.Location))
                .AddReferences(new MetadataFileReference(typeof(FurnaceItem).Assembly.Location))
                .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            Assembly assembly = null;
            using (var memStream = new MemoryStream())
            {
                compilation.Emit(memStream);
                memStream.Flush();
                assembly = Assembly.Load(memStream.GetBuffer());
            }
        }
Example #4
0
        public void SomeOtherTest()
        {
            if (File.Exists(@"c:\temp\MyCompilation.dll"))
            {
                return;
            }

            var tree     = CSharpSyntaxTree.ParseFile("Roslyn/FurnaceItem.cs");
            var oldRoot  = tree.GetRoot();
            var rewriter = new BaseClassInserter("TestClass");
            var newRoot  = rewriter.Visit(oldRoot);

            newRoot = newRoot.NormalizeWhitespace(); // fix up the whitespace so it is legible.

            System.Console.WriteLine(newRoot.ToFullString());

            var newTree     = SyntaxFactory.SyntaxTree(newRoot);
            var compilation = CSharpCompilation.Create("MyCompilation")
                              .AddSyntaxTrees(newTree)
                              .AddReferences(new MetadataFileReference(typeof(object).Assembly.Location))
                              .AddReferences(new MetadataFileReference(typeof(FurnaceItem).Assembly.Location))
                              .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            using (var file = new FileStream(@"c:\temp\MyCompilation.dll", FileMode.Create))
            {
                var result = compilation.Emit(file);

                Assert.That(result.Diagnostics, Is.Empty);
            }
        }