2014-12-17 7 views
6

Roslyn wersja 1.2. * Ma funkcję o nazwie MetadataReference.CreateAssemblyReference(), która pobiera nazwę wyświetlaną zespołu i zwraca odpowiedni obiekt MetadataReference. Na przykład udało mi się dodać odniesienie do różnych zespołów, co następuje:Dodawanie metadanychReference w Roslyn Vs Microsoft.CodeAnalysis

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); 

To jednak nie wydaje się możliwe z pakietem Microsoft.CodeAnalysis (jest to ostatni pakiet, który można zainstalować z Nuget). Ten pakiet ma kilka funkcji wewnątrz MetadataReference - ale wymagają one złożenia lub ścieżki pliku.

Czy wyżej wspomniana prostsza funkcja istnieje w nowszych pakietach kompilatora?

+0

Nie; musisz powiedzieć mu, gdzie załadować zespół z. – SLaks

+0

Oh - znaczenie dla zespołu takiego jak "System.Data.DataSetExtensions" musiałbym podać pełną ścieżkę, taką jak "C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Data.DataSetExtensions \ v4.0_4.0.0. 0__b77a5c561934e089 "? Czy istnieje prosty sposób na uzyskanie tego? – shekhar

Odpowiedz

2

można załadować zespół z ładowaczem CLR i dowiedzieć się, gdzie został załadowany z:

typeof(DataSetExtensions).Assembly.Location