2012-03-26 11 views
5

Używam Visual Studio 2010.Jak mogę zignorować błąd opcjonalnego parametru na MSBuild 3,5

mam ściągnięte zaktualizowaną klasy (tj UpdatedClass.cs), który ma metodę z parametrem opcjonalnym, takie jak:

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

Przy użyciu Visual Studio 2010, jestem w stanie skompilować go. Ale nie mogę tego zrobić z 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 

Cóż, opcjonalne parametry nie są dozwolone przy użyciu tego kompilatora. Czy mogę dodać dodatkowy argument w tym poleceniu MSBuild, aby zignorować tego rodzaju błąd?

Czy muszę skompilować projekt za pomocą C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe? Czy to jest bezpieczne w przypadku projektów asp.net?

+0

opcjonalne parametry są w ramach 4.0, więc trzeba zbudować go z kompatybilnym kompilator. (Ten sam błąd wystąpiłby w Visual Studio, gdybyś próbował zbudować z inną docelową wersją). – GalacticCowboy

+2

@GalacticCowboy: Opcjonalne parametry były w * ramach * od 1.0, ale nie były dostępne w * C# * do v4. –

+0

@JonSkeet - dobry punkt. – GalacticCowboy

Odpowiedz

4

Jeśli używasz składni C# 4, musisz użyć kompilatora 4.0. A to oznacza, że ​​musisz uruchomić .Net 4.0 na serwerze, na którym zamierzasz wdrożyć ten kod. Alternatywnie - przepisać kod nie używać domyślnych parametrów, to nie jest trudne - wystarczy dodać przeciążenie tak:

public void DoThis() {DoThis(false);} 
public void DoThis(bool aValue) {...} 
Powiązane problemy