2008-09-28 14 views
13

Wie geben Sie eine Ziel Framework-Version für den csc.exe C# -Compiler über den Aufruf der Befehlszeile (z. B. keine .csproj-Datei und nicht durch die MSBUILD-Engine)?Targeting spezifische Fragework-Version in csc.exe

z. B. mithilfe des C# 3.0 csc.exe-Compilers, wie kompilieren Sie nach IL, das auf das 2.0 .NET-Framework abzielt?

Antwort

4

Im speziellen Fall des C# 3-Compilers gibt es kein Problem, solange Sie keine Assemblys oder Typen verwenden, die nicht in .NET 2.0 sind - die IL ist die gleiche (im Gegensatz zu Targeting 1.1, zum Beispiel).

Zusätzlich können Sie/noconfig/nostdlib verwenden und dann explizit auf die .NET 2.0-Assemblys verweisen (z. B. in c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727). Es sieht so aus, als ob die/lib-Befehlszeilenoption dies etwas leichter machen kann, indem Sie ein Verzeichnis angeben können, in dem nach Referenzen gesucht wird, aber das habe ich selbst nicht versucht.

+0

Dies scheint zu funktionieren (explizit Bezug auf die 2.0-Bibliotheken), aber der erste Vorschlag, sich einfach auf die Tatsache zu verlassen, dass die IL die gleiche ist) würde mich 'exponiert' lassen (zB keine Kompilierungswarnung, dass ich war von den 2.0-only-Baugruppen abgewichen. – sbohlen

+0

Ja, das würde dich dem aussetzen. Seien Sie vorsichtig bei den Unterschieden zwischen .NET 2.0 und 2.0SP1 (z. B. DateTimeOffset) - ich weiß nicht, ob Sie die "Vanille" 2.0-Assemblys, auf die verwiesen wird, leicht finden können. Natürlich könnten Sie sie von einem Nicht-SP1-Rechner kopieren ... –

+0

Ja, ich denke, soweit ich das beurteilen kann, muss ich in re: schauen, wie es "erzwungen" wird, wenn MSBUILD ausgelöst wird gegen die .csproj-Datei (wo natürlich die Ziel-FW-Version angegeben werden kann). Scheint, dass keine kugelsichere csc.exe-Option für mich verfügbar ist. – sbohlen