2010-06-13 21 views
6

Ich verwende die Klasse CSharpCodeProvider, um ein C# -Skript zu kompilieren, das ich als DSL in meiner Anwendung verwende. Wenn Warnungen, aber keine Fehler vorhanden sind, enthält die Errors Eigenschaft der resultierenden CompilerResults-Instanz keine Elemente. Aber wenn ich einen Fehler einführe, werden die Warnungen plötzlich auch in der Errors Eigenschaft aufgelistet.CSharpCodeProvider gibt Compilerwarnungen nicht zurück, wenn keine Fehler vorhanden sind

Also, wie bekomme ich die Warnungen, wenn keine Fehler sind? Übrigens, ich möchte TreatWarningsAsErrors nicht auf true setzen.

+0

btw, siehe http://stackoverflow.com/questions/2610886/is-it-possible-to-call-clexical-syntax-analyzers-without-compilation/2611177#2611177 über 'GenerateInMemory' – abatishchev

+0

@abatishchev Danke, das ist eine interessante Tatsache. –

Antwort

1

Sie haben nicht gesetzt CompilerParameters.WarningLevel

+0

Das habe ich schon ausprobiert, aber das machte keinen Unterschied. Außerdem werden die Warnungen gemeldet, wenn mindestens ein Fehler vorliegt. Dies würde nicht passieren, wenn die Warnstufe auf ein unangemessenes Niveau eingestellt wäre. –

+0

So stellt sich heraus, dass Sie richtig waren, ich musste die Warnstufe auf 3 setzen (ich glaube, ich habe nur 0, 1 und vielleicht 2 probiert). Weil du der Erste bist, der dies vorgeschlagen hat, habe ich deine Antwort akzeptiert. –

+0

@Sandor: Danke! Soweit ich von Reflector 'WarningLevel' verstehe, wird standardmäßig auf' 4' gesetzt. Aber in MSDN wird nichts darüber gesagt, – abatishchev

1

Es ist für mich in Ordnung war, nachdem ich die anderen kompilieren Fehler im Code (Die Kommentarzeichen) und compilerParameters.WarningLevel gesetzt fixiert.

+0

Danke, es in diesem Fall auf 3 zu setzen, scheint den Trick zu machen. Ich denke jedoch, dass bei einem oder mehreren Fehlern die Warnungen unabhängig vom Parameterwert der Warnstufe angezeigt werden. –

Verwandte Themen