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% 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.