2012-03-26 27 views
5

Estoy utilizando Visual Studio 2010.¿Cómo puedo ignorar error de parámetro opcional en MSBuild 3.5

He donwloaded una clase actualizada (es decir UpdatedClass.cs) que tiene un método con el parámetro opcional, como por ejemplo:

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

Usando Visual Studio 2010, puedo compilarlo. Pero no puedo hacerlo con 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 

Bueno, los parámetros opcionales no están permitidos con este compilador. Entonces, ¿puedo agregar un argumento adicional en este comando MSBuild para ignorar este tipo de error?

¿O tengo que compilar el proyecto usando C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe? ¿Esto es seguro con respecto a los proyectos asp.net?

+0

parámetros opcionales se encuentran en el marco 4.0, por lo que tendremos que construirlo con el compilador compatible. (Vería el mismo error en Visual Studio si intentó compilar con una versión de destino diferente). – GalacticCowboy

+2

@GalacticCowboy: los parámetros opcionales han estado en * framework * desde 1.0, pero no estaban disponibles en * C# * hasta que v4. –

+0

@JonSkeet - buen punto. – GalacticCowboy

Respuesta

4

Si usa la sintaxis C# 4, tiene que usar un compilador 4.0. Y esto significa que necesita ejecutar .Net 4.0 en el servidor donde tiene la intención de implementar este código. Alternativamente - reescribir el código de no utilizar los parámetros por defecto, que no es difícil - sólo tiene que añadir una sobrecarga de esta manera:

public void DoThis() {DoThis(false);} 
public void DoThis(bool aValue) {...} 
Cuestiones relacionadas