2009-10-23 16 views

Respuesta

7

Si todo lo demás falla, pruébelo. Acabo probado las siguientes en VS2010b2, compilado focalización 2.0:

using System;  
class Program { 
    static void Main() { 
     Write(); 
     Write(msg: "world"); 
     Console.ReadLine(); 
    } 
    static void Write(string msg = "Hello") { 
     Console.WriteLine(msg); 
    } 
} 

Este utiliza dos nuevos C# 4.0 lenguaje características, que utilizan el meta-datos que también está presente en 2.x .NET/3 .x/CLR 2; se ejecuta bien en mi máquina normal (CLR 2) (mi VS2010b2 es una VM). Entonces concluyo "sí, por algunas características". Obviamente, si utiliza una función dependiente del marco (dynamic, etc.), no va a terminar tan bien.

Editar: re su comentario; He intentado csc en la línea de comandos, y de forma predeterminada este hace objetivo CLR 4; Trataré de ver si puedo hacer que apunte a CLR 2 (como VS obviamente puede). Por desgracia, ya no incluye el (, fingido por cierto) de línea de comandos en la ventana de resultados de generación ...

Actualización: algunos "en el saber" la gente regresó con:

Pass/nostdlib y una referencia a la 2.0 mscorlib.dll.

y bastante seguro:

C:\Windows\Microsoft.NET\Framework\v4.0.21006>csc /nostdlib /reference:%SystemRo 
ot%\microsoft.net\framework\v2.0.50727\mscorlib.dll /out:c:\my.exe /target:exe " 
C:\Users\Marc\Documents\Visual Studio 2010\Projects\ConsoleApplication6\ConsoleA 
pplication6\program.cs" 
Microsoft (R) Visual C# 2010 Compiler version 4.0.21006.1 
Copyright (C) Microsoft Corporation. All rights reserved. 

funciona bien (exe funciona en mi máquina no 4.0). Crédito: Kevin Pilch-Bisson

1

C# 4.0 usa .NET CLR 4.0 por lo que no habrá compatibilidad binaria con el CLR 2.0. Sin embargo, podrá orientar el framework 2.0.

+0

¿Qué es la comparabilidad binaria? –

+0

Bob quiso decir 'compatibilidad' –

+0

jaja corregir Ed, sabes que no puedes deletrear cuando no puedes confiar en el corrector ortográfico. ¡Gracias! – Bob

1

Depende del compilador.

Las indicaciones hasta ahora parecen indicar que el compilador C# 4.0 podrá apuntar al tiempo de ejecución .NET 2.0, generando IL que sea compatible con ese tiempo de ejecución y asegurándose de que solo hace referencia a ensamblados que también se ejecutan en .NET 2.0.

Tenga en cuenta que la orientación es una elección, sin embargo, y no hay garantía de que cualquier otro compilador tenga la misma función.

Mayormente, supongo que es una decisión que tomará el equipo que implementa el compilador.

Por ejemplo, es probable que los equipos del compilador C# y VB.NET sean compatibles con multitargeting (aunque podrían retroceder y dejarlo como una característica de Visual Studio, donde VS elige compiladores diferentes para objetivos diferentes).

Otros proveedores que utilizan .NET Framework pueden tomar otras decisiones.

+0

Sé que puedo orientarme a CLR 2.0 con csc.exe 3.5, es por eso que pregunté específicamente sobre el compilador C# 4.0 y no VS. VS 2010 es beta2 ahora, así que creo que la decisión de apoyar la mutitación se hace, aunque no estás seguro de eso ... –

Cuestiones relacionadas