Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding MetadataReference in Roslyn Vs Microsoft.CodeAnalysis

Tags:

c#

roslyn

Roslyn version 1.2.* has a function called MetadataReference.CreateAssemblyReference() which takes the display name of the assembly and returns the appropriate MetadataReference object. For example I was able to add reference to various assemblies as follows:

Compilation compilation = Compilation.Create("HelloWorld")
                .AddReferences(MetadataReference.CreateAssemblyReference("mscorlib"),
                    MetadataReference.CreateAssemblyReference("System.Linq"),
                    MetadataReference.CreateAssemblyReference("System.Data.Linq"),
                    MetadataReference.CreateAssemblyReference("System.Data"),
                    MetadataReference.CreateAssemblyReference("System.Data.DataSetExtensions"),
                    MetadataReference.CreateAssemblyReference("System.Xml"),
                    MetadataReference.CreateAssemblyReference("System.Xml.Linq"),
                    MetadataReference.CreateAssemblyReference("System"),
                    MetadataReference.CreateAssemblyReference("System.Core")
                //MetadataReference.CreateAssemblyReference("System.Core"),
                /*MetadataReference.CreateAssemblyReference("System")*/)
                .AddSyntaxTrees(tree);

This however does not seem possible with the Microsoft.CodeAnalysis package (this is the latest package that one can install from Nuget). This package has a few functions inside MetadataReference - but they either require an Assembly or a file path.

Does that above mentioned simpler function exist in newer compiler packages?

like image 594
shekhar Avatar asked Dec 17 '14 05:12

shekhar


1 Answers

You can load the assembly with the CLR loader and find out where it was loaded from:

typeof(DataSetExtensions).Assembly.Location
like image 123
SLaks Avatar answered Sep 28 '22 13:09

SLaks