Pregunta

Supongamos que tengo algún código que, en teoría, se compilaría contra cualquier versión del marco .net.Piense en "Hola mundo", si lo desea.

Sin embargo, si realmente compilo el código, obtendré un ejecutable que se ejecuta contra uno particular versión.

¿Hay alguna forma de organizar las cosas para que el archivo ejecutable compilado se ejecute con cualquier versión que encuentre?Sospecho firmemente que la respuesta es no, pero me encantaría que me demuestren que estoy equivocado...


Editar:Bueno, iré al pie de nuestras escaleras.No tenía idea de que los marcos posteriores ejecutarían felizmente archivos ejecutables compilados en versiones anteriores.¡Gracias por todas las respuestas!

¿Fue útil?

Solución

No estoy seguro de si esto es correcto, pero intentaría compilarlo para la versión más baja, las versiones superiores deberían poder ejecutar los archivos ejecutables de las versiones inferiores.

Otros consejos

Lea la publicación de ScuttGu sobre Soporte de orientación múltiple VS 2008

Uno de los grandes cambios que estamos haciendo a partir del lanzamiento de VS 2008 es admitir lo que llamamos "multi -objetivo", lo que significa que Visual Studio ahora admitirá dirigirse a múltiples versiones del marco .NET, y los desarrolladores podrán comenzar Aprovechando las nuevas funciones que ofrece Visual Studio sin tener que actualizar siempre sus proyectos existentes e implementadas aplicaciones para usar una nueva versión de la biblioteca .NET Framework.

Ahora, cuando abre un proyecto existente o crea uno nuevo con VS 2008, puede elegir qué versión del marco .NET para trabajar, y el IDE actualizará sus compiladores y el conjunto de funciones para que coincida con esto.Entre otras cosas, esto significa que las características, controles, proyectos, plantillas de elementos y referencias de ensamblaje que no funcionan con esa versión del marco se ocultarán, y cuando cree su aplicación podrá tomar el compilado Salir y copiarla en una máquina que solo tiene una versión anterior del marco .NET instalado, y sabrá que la aplicación funcionará.

De esa manera puedes usar VS2008 para desarrollar proyectos .NET 2.0 que funcionarán tanto en .NET 2.0, 3.0 y 3.5.

Además de la orientación múltiple, los marcos son compatibles con versiones anteriores, por lo que algo compilado en 1.0 se ejecutará en 1.1 y 2.Algo compilado en 1.1 se ejecutará en 2...etc.

@John Boker es correcto cuando se trata de bibliotecas de clases .Net.Puede compilar una biblioteca de clases con .Net 1.1 y luego usarla en un proyecto .Net 2.0 o superior.

Sospecho que lo mismo ocurre con los ejecutables.

con 2005 y 2008, sí (en CLR 2.0)

Con 2003, no..porque se compila hasta CLR 1.1

En teoría, podría escribir algún código usando #if (DOTNET35) y demás para no utilizar funciones fuera del conocimiento de los compiladores y luego ejecutar el compilador deseado en la aplicación...Aunque cuestiono la utilidad de esto.

Bueno, AFAIK, todas las versiones de .NET (excepto la versión 1.x) se compilan en el mismo código de bytes.En el caso de C#, todas las características nuevas son simplemente azúcar sintáctico, que se transforma en construcciones de C# 2.0 al compilar.El punto clave en el que las cosas podrían salir mal es cuando se utilizan DLL específicas de C# 3.0 o 3.5.No funcionan bien con el marco .NET 2.0, por lo que no puedes usarlos.

Realmente no puedo pensar en una solución para esto, lo siento :(

En cuanto al tema de qué .NET framework ha instalado el usuario, también hay una nueva opción con el Perfil de Cliente que está disponible con .NET 3.5 SP1.Básicamente, esto le permite enviar un pequeño programa de arranque (277k) que descarga e instala los archivos necesarios (un subconjunto del marco .NET completo).

Para obtener más información y consejos generales sobre cómo crear una pequeña instalación .NET, consulte este excelente entrada de blog de Scott Hanselman.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top