Roslyn - CSharpCompilation

8

Ich verwende die Klasse CSharpCompilation , um eine SyntaxTree zu kompilieren, wobei der Stamm eine Klassendeklaration ist. Ich übergebe dem Konstruktor ein Objekt CSharpCompilationOptions , das meine using-Anweisungen enthält.

Nach meinem Verständnis wird der Syntaxbaum unter Verwendung des Kontextes aller using-Anweisungen kompiliert, die ich durchlasse. Wenn ich jedoch versuche, auf eine Klasse zuzugreifen, die in einem der "usings" definiert ist, die ich an das options-Objekt übergebe, erhalte ich eine Fehlermeldung, dass sie im aktuellen Kontext nicht existiert.

Ich mache eindeutig etwas falsch. Wer weiß, wofür die Liste der Usings in der Klasse CSharpCompilationOptions steht?

Dies ist der Code:

%Vor%     
user2697817 09.07.2014, 15:54
quelle

1 Antwort

5

Es stellt sich also heraus, dass CSharpCompilationOptions.Usings beim Compilieren von Skriptdateien immer nur im Compiler untersucht wird. Wenn Sie die Referenzen nachverfolgen, wird es am Ende hier , in einem if (inScript) check.

Wir müssen das wahrscheinlich besser dokumentieren.

    
Kevin Pilch 10.07.2014, 15:54
quelle

Tags und Links