Ich glaube nicht, dass Sie das tun können. Sie können eine Sprachversion in den Projekteigenschaften festlegen, aber das ist nicht dasselbe wie mit dem C# 3-Compiler von .NET 3.5. Ich glaube, es gibt feine Unterschiede um Typinferenz und Überladungsauflösung, zum Beispiel, wo die C# 4 Regeln statt dem C# 3 Regeln befolgt werden, auch beim Bau als C# 3. Hier ist ein Beispiel dafür ist:
using System;
class Test
{
static void Main()
{
CallFunc(Demo);
}
static int Demo() { return 5; }
static T CallFunc<T>(Func<T> func)
{
return func();
}
}
Dies erstellt mit dem C# 4-Compiler, auch wenn Sie/langversion: 3 angeben - aber es wird nicht mit dem C# 3-Compiler erstellt.
Sie können finden, dass Sie die Projektdatei optimieren können, um die vorherige Version des Compilers zu verwenden - aber ich weiß nicht, wie Visual Studio damit umgehen würde. Ich vermute, es würde schrecklich verwirrt werden.
EDIT: Okay, jetzt haben Sie die Motivation gegeben, ich denke, Sie möchten vielleicht tun, was wir für Noda Time tun. Wir haben eine VS2010-Lösung und eine VS2008-Lösungsdatei. Sie laden beide die gleichen Projekte, die ein ToolsVersion
Attribut von 4.0 haben. Ich habe es nicht versucht, aber ich glaube das sollte absolut gut auf einer Maschine mit nur .NET 3.5 bauen.
Sie können die Sprachversion auch auf 3 und in Ihren Projektdateien einstellen, um das versehentliche Verwenden neuer Funktionen zu vermeiden. Es macht Ihre Kompatibilität nicht kugelsicher, aber wenn Sie alle Unit- und Integrationstests auf einem Build-Server aufbauen, der nur auf .NET 3.5 läuft, sind Sie unwahrscheinlich, um von den Änderungen gebissen zu werden.
Angesichts der vielen Befragten, die davon ausgehen, dass Sie entweder auf .NET 3.5 abzielen oder es nicht wichtig ist, dass Ihr Code möglicherweise nicht mit der älteren Version kompiliert wird der Compiler, ich denke, es würde Ihrer Sache helfen, wenn Sie mehr Details geben könnten :) –
Danke für die zusätzlichen Details - Ich habe meine Antwort entsprechend aktualisiert. –
Ich gehe davon aus, weil es ein * Build-Server * ist, dass Sie möchten, dass Ihr Code nicht nur ohne .NET 4 * sondern auch * ohne .NET 4 * läuft *. –