none
Cambiar versión de Framework RRS feed

  • Pregunta

  • Buenas,

    Tengo una aplicación de Consola que fue desarrollada y compilada para el Framework 4.5 con target Any CPU. La aplicación corre sobre un Windows Server 2012 (64 bits) sin problemas y lo que se desea ahora es que esa misma aplicación se ejecute en un Windows Server 2003 (32 bits) que tiene instalada la versión 4.0 del NetFramework. Mi duda es si bastaría con agregar en el config la siguiente línea con comentario:

    <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> <!--Esta es la línea que pretendo agregar--> </startup>

    ... </configuration>

    O es que necesariamente debo cambiar la versión del Framework desde la configuración del proyecto.

    Saludos y gracias.



    • Editado eduar2083 viernes, 25 de marzo de 2016 21:57
    viernes, 25 de marzo de 2016 21:50

Respuestas

  • El atributo supportedRuntime fuerza un orden a la hora de que .NET seleccione la versión del CLR que utilizará para ejecutar la aplicación.

    Por defecto .NET buscará la versión de CLR para la versión de .NET Framework con la que se compiló la aplicación, si no la encuentra tratará de utilizar la última versión instalada.

    supportedRuntime permite alterar el orden de precedencia de las diferentes versiones soportadas a la hora de hacer esta elección de versión de CLR.

    Puedes echarle un vistazo a estos links para más información:

    supportedRuntime (Elemento)

    Cómo: Configurar una aplicación para admitir .NET Framework 4 o 4.5

    A través del atributo supportedRuntime podrías indicar, por ejemplo, que una aplicación compilada en la versión 4.0 pude ejecutarse con las versiones 4.5 y 4.0 (en este orden). De esta forma se intentará ejecutar en el equipo primero con la versión 4.5 y, si no la encuentra, buscará la 4.0.

    Si omitieses el atributo se intentaría ejecutar primero con la versión 4.0 (que es con la que se compiló la aplicación) y, si no la encuentra, con la última versión instalada.

    Pero en principio no puedes hacer el caso contrario: tratar de ejecutar una aplicación con una versión del framework inferior a la que se utilizó para compilarla.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 26 de marzo de 2016 5:24

Todas las respuestas

  • hola

    Recuerda que debes cambiar desde las propiedades del proyecto la version del framework que vas a utilizar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 25 de marzo de 2016 22:00
  • Leandro,

    Entonces necesariamente debo abrir las fuentes con Visual Studio para cambiar el Framework destino. En ese sentido, me preguntaba para qué sirve el tag supportedRuntime del archivo de configuración.

    viernes, 25 de marzo de 2016 22:23
  • El atributo supportedRuntime fuerza un orden a la hora de que .NET seleccione la versión del CLR que utilizará para ejecutar la aplicación.

    Por defecto .NET buscará la versión de CLR para la versión de .NET Framework con la que se compiló la aplicación, si no la encuentra tratará de utilizar la última versión instalada.

    supportedRuntime permite alterar el orden de precedencia de las diferentes versiones soportadas a la hora de hacer esta elección de versión de CLR.

    Puedes echarle un vistazo a estos links para más información:

    supportedRuntime (Elemento)

    Cómo: Configurar una aplicación para admitir .NET Framework 4 o 4.5

    A través del atributo supportedRuntime podrías indicar, por ejemplo, que una aplicación compilada en la versión 4.0 pude ejecutarse con las versiones 4.5 y 4.0 (en este orden). De esta forma se intentará ejecutar en el equipo primero con la versión 4.5 y, si no la encuentra, buscará la 4.0.

    Si omitieses el atributo se intentaría ejecutar primero con la versión 4.0 (que es con la que se compiló la aplicación) y, si no la encuentra, con la última versión instalada.

    Pero en principio no puedes hacer el caso contrario: tratar de ejecutar una aplicación con una versión del framework inferior a la que se utilizó para compilarla.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 26 de marzo de 2016 5:24
  • Hola.

    En principio lo que intentaba era no utilizar VS para abrir las fuentes ya que según entiendo la documentación bastaría con modificar el App.Config y agregar la línea:

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

    Para que la aplicación sea ejecutada con la versión 4.0 del NetFramework ya que el equipo donde se instalará dicha aplicación tiene dicha versión instalada y no tiene la 4.5 que es con la que se compiló la aplicación.

    He realizado una prueba con máquinas virtuales y pues no me ha funcionado con sólo modificar el App.Config. He tenido que abrir las fuentes con VS y cambiar la versión del Framework desde las propiedades del proyecto y con esto ya funciona.

    Saludos. 

    sábado, 26 de marzo de 2016 14:23
  • Sí, como te comentaba, si hubieses compilado tu aplicación con la versión 4.0 sí puedes indicarle qué versión utilizar por defecto (la 4.0 o la 4.5). Pero si has compilado tu aplicación con la versión 4.5 las versiones disponibles siempre van a ser a partir de la 4.5, no puedes ejecutarla con la 4.0.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 26 de marzo de 2016 18:24
  • Ah ok, recién comprendo esa parte. Entonces como todo sería en orden hacia adelante y no hacia atrás por el simple hecho de que pudiera haber código que sólo el Framework 4.5 puede entender.

    Ahora comprendo porqué no funciona. Muchas gracias.

    domingo, 27 de marzo de 2016 0:06