2012-03-26 12 views
5

ich Visual Studio bin mit 2010Wie kann ich ignoriere optionale Parameterfehler auf MSBuild 3.5

ich eine aktualisierte Klasse donwloaded habe (dh UpdatedClass.cs), die ein Verfahren mit optionalen Parametern haben, wie zum Beispiel:

public void DoThis(bool aValue = false) {...} 

Mit Visual Studio 2010 kann ich es kompilieren. Aber ich kann es nicht mit MSBuild:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /t:Rebuild /clp:ErrorsOnly D:\folder\mySolution.sln 
ln 
Microsoft (R) Build Engine Version 3.5.30729.5420 
[Microsoft .NET Framework, Version 2.0.50727.5448] 
Copyright (C) Microsoft Corporation 2007. All rights reserved. 

UpdatedClass.cs(29,94): error CS0241: Default parameter specifiers are not permitted 

Nun, optionale Parameter sind nicht mit diesem Compiler erlaubt. Also kann ich ein zusätzliches Argument in diesem MSBuild-Befehl hinzufügen, um diese Art von Fehler zu ignorieren?

Oder muss ich das Projekt mit C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe kompilieren? Ist dies in Bezug auf asp.net-Projekte sicher?

+0

Optionale Parameter sind in der 4.0 Framework, so dass Sie es mit dem kompatiblen Compiler zu bauen. (Sie sehen den gleichen Fehler in Visual Studio, wenn Sie versuchen, mit einer anderen Zielversion zu erstellen.) – GalacticCowboy

+2

@GalacticCowboy: Optionale Parameter sind seit * 1.0 im * Framework * enthalten, waren aber bis * nicht in * C# * verfügbar v4. –

+0

@JonSkeet - guter Punkt. – GalacticCowboy

Antwort

4

Wenn Sie die C# 4-Syntax verwenden, müssen Sie einen 4.0-Compiler verwenden. Das bedeutet, dass Sie .Net 4.0 auf dem Server ausführen müssen, auf dem Sie diesen Code bereitstellen möchten. Alternativ - schreiben Sie den Code nicht Standardparameter zu verwenden, das ist nicht schwer - nur eine Überlastung wie folgt hinzu:

public void DoThis() {DoThis(false);} 
public void DoThis(bool aValue) {...} 
Verwandte Themen