2014-12-17 11 views
6

Roslyn versione 1.2. * Ha una funzione denominata MetadataReference.CreateAssemblyReference() che accetta il nome visualizzato dell'assembly e restituisce l'oggetto appropriato MetadataReference. Per esempio sono stato in grado di aggiungere riferimento alle varie assemblee come segue:Aggiunta di 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); 

Questo però non sembra possibile con il pacchetto Microsoft.CodeAnalysis (questo è l'ultimo pacchetto che si può installare da Nuget). Questo pacchetto ha alcune funzioni all'interno di MetadataReference, ma richiedono un assembly o un percorso di file.

Questa funzione più semplice sopra descritta esiste nei pacchetti di compilatore più recenti?

+0

No; devi dirgli da dove caricare l'assemblaggio. – SLaks

+0

Oh - significato per un assembly come "System.Data.DataSetExtensions" dovrei specificare il percorso completo come "C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Data.DataSetExtensions \ v4.0_4.0.0. 0__b77a5c561934e089 "? C'è un modo semplice per ottenere questo? – shekhar

risposta

2

È possibile caricare l'assembly con il caricatore CLR e scoprire dove è stato caricato da:

typeof(DataSetExtensions).Assembly.Location 
Problemi correlati