2011-06-16 18 views
5

Escenario:Compiler versión vs NET Framework versión - Escenario con aplicaciones ASP.NET

tengo VS 2010 (C# 4 compilador) dirigidos a 3.5 en mi máquina cliente.

Estoy desarrollando aplicaciones ASP.NET. Utilizo parámetros opcionales (compatible con C# 4) en un archivo de clase y compilo el código, todo parece funcionar bien.

Más tarde surge un problema que se descubrió en Runtime en el que una antigua (clásica creo) ASPX está utilizando la función. Ninguna función acepta solo x argumentos donde x es uno menos que el parámetro opcional es el error de tiempo de ejecución.

Esto significa que las clases normales y tales usan el compilador C# del cliente, mientras que las vistas (aspx) y tal usan el compilador en el servidor, causando problemas si C# 4 se usa en archivos view/form?

+0

¿Se está llamando a la función desde el archivo .aspx o desde el código subyacente para ese archivo? –

+0

Dentro del archivo ASPX –

Respuesta

3

Creo que esto tiene que ver con el hecho de que las páginas aspx son (¿re?) Compiladas en primera carga por IIS en lugar de compilarse en Visual Studio. Esto les permite actualizarse sobre la marcha sin volver a compilar, sin embargo, dado que están compilados por IIS, trae las complicaciones que está viendo.

No estoy al tanto de una manera de tener IIS utilizar el compilador de C# 4, pero a compilar .NET 3.5 así que parece que las únicas opciones son:

  1. Update para .NET 4
  2. No use los parámetros opcionales
  3. No llame al código que usa parámetros opcionales en sus archivos .aspx. Supongo que si mueves las llamadas al archivo codebehind debería funcionar bien, pero no lo he intentado.
+0

http://stackoverflow.com/questions/1210679/can-you-use-optional-parameters-in-code-targeting-net-3-5 –

+0

@ Adam Sé muy bien que eres capaz de usar parámetros opcionales mientras se dirige a .NET 3.5, siempre que use el compilador C# 4.0. Sin embargo, lo que quería decir es que si bien puedes hacerlo en Visual Studio, no conozco una manera de que IIS use el compilador C# 4 mientras se dirige a .NET 3.5 cuando recompila páginas .aspx sobre la marcha . – Davy8

+0

ah de hecho +1 como debería leer un poco más cuidadosamente:) –

Cuestiones relacionadas