2014-12-17 12 views
6

Roslyn Version 1.2. * Hat eine Funktion namens MetadataReference.CreateAssemblyReference(), die den Anzeigenamen der Assembly übernimmt und das entsprechende MetadataReference Objekt zurückgibt. Zum Beispiel war ich in der Lage Bezugnahme auf verschiedene Baugruppen wie folge hinzuzufügen:Hinzufügen von MetadataReference in 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); 

Dies ist jedoch nicht möglich erscheint mit dem Microsoft.CodeAnalysis Paket (dies ist das letzte Paket, das man von Nuget installieren kann). Dieses Paket hat einige Funktionen innerhalb MetadataReference - aber sie erfordern entweder eine Assembly oder einen Dateipfad.

Gibt es die oben erwähnte einfachere Funktion in neueren Compiler-Paketen?

+0

; Sie müssen angeben, wo die Baugruppe geladen werden soll. – SLaks

+0

Oh - Bedeutung für eine Assembly wie "System.Data.DataSetExtensions" würde ich den vollständigen Pfad wie "C: \ Windows \ Microsoft.NET \ Assembly \ GAC_MSIL \ System.Data.DataSetExtensions \ v4.0_4.0.0 angeben müssen. 0__b77a5c561934e089 "? Gibt es einen einfachen Weg, um das zu bekommen? – shekhar

Antwort

2

Sie die Baugruppe mit den CLR-Loader laden und herausfinden, wo es aus geladen wurde: Keine

typeof(DataSetExtensions).Assembly.Location 
Verwandte Themen