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?
Nie; musisz powiedzieć mu, gdzie załadować zespół z. – SLaks
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