Saltar al contenido principal

 none
MSIL, utilidad RRS feed

  • Pregunta

  • Buenos días, 

    tengo que investigar la utilidad de MSIL, en relación a .NET, Visual Studio 2017.

    Alguien puede hacerme una pequeña introducción o donde puedo ver información en relación al tema.

    Muchas gracias. Un saludo.

    lunes, 28 de octubre de 2019 9:09

Respuestas

  • hola

    Utilidad? sabes minimamente lo que es MSIL ?

    MSIL - Microsoft Intermediate Language

    en principio tu no interactuas ni usas MSIL, es algo interno del framework

    Ademas no tiene relacion concreta con el Visual Studio en si, sino mas bien con el framework de .net, el VS es solo un IDE de desarrollo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta DaniDeveloper lunes, 28 de octubre de 2019 11:53
    lunes, 28 de octubre de 2019 10:47
  • En otras plataformas, cuando compilas tu código fuente en un lenguaje de alto nivel, se genera un ejecutable en lenguaje máquina para el procesador para el que estás compilando.

    En .Net, lo que se genera es un lenguaje intermedio, llamado "Microsoft intermediate language (MSIL)". Este lenguaje no es directamente ejecutable en el procesador de destino. En su lugar, cuando lanzas el .exe, se ejecuta una pequeña cabecera instalada al principio del .exe que carga en memoria el MSIL que hay dentro del exe, lo compila "sobre la marcha" con un compilador interno que se llama el "JIT" (Just-In-Time) y el resultado de este paso es código ejecutable optimizado para el tipo de procesador en el que estés ejecutando el exe en ese momento.

    Este paso (JIT) lleva algo de tiempo. Hay ciertas optimizaciones para que corra más: según el programa va llamando a distintos métodos, se JIT-compila solo el método al que llamas y únicamente cuando éste llama a otro método se JIT-compila el siguiente método. De esa manera se acelera la velocidad de carga.

    Para los casos en que esto no es aceptable, hay una utilidad que permite dejar completamente compilado un ejecutable de tipo MSIL, convirtiéndolo en ejecutable "de verdad" (que solo vale para la máquina en la que se hizo esta operación). Normalmente, esto se hace desde el instalador de la aplicación, si es que se trata de una aplicación lo bastante crítica como para requerir esta optimización. En la mayoría de los casos, se deja el exe con MSIL y carga suficientemente rápido; el JIT en la práctica no se nota.

    • Marcado como respuesta DaniDeveloper lunes, 28 de octubre de 2019 13:38
    lunes, 28 de octubre de 2019 11:50

Todas las respuestas

  • hola

    Utilidad? sabes minimamente lo que es MSIL ?

    MSIL - Microsoft Intermediate Language

    en principio tu no interactuas ni usas MSIL, es algo interno del framework

    Ademas no tiene relacion concreta con el Visual Studio en si, sino mas bien con el framework de .net, el VS es solo un IDE de desarrollo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta DaniDeveloper lunes, 28 de octubre de 2019 11:53
    lunes, 28 de octubre de 2019 10:47
  • En otras plataformas, cuando compilas tu código fuente en un lenguaje de alto nivel, se genera un ejecutable en lenguaje máquina para el procesador para el que estás compilando.

    En .Net, lo que se genera es un lenguaje intermedio, llamado "Microsoft intermediate language (MSIL)". Este lenguaje no es directamente ejecutable en el procesador de destino. En su lugar, cuando lanzas el .exe, se ejecuta una pequeña cabecera instalada al principio del .exe que carga en memoria el MSIL que hay dentro del exe, lo compila "sobre la marcha" con un compilador interno que se llama el "JIT" (Just-In-Time) y el resultado de este paso es código ejecutable optimizado para el tipo de procesador en el que estés ejecutando el exe en ese momento.

    Este paso (JIT) lleva algo de tiempo. Hay ciertas optimizaciones para que corra más: según el programa va llamando a distintos métodos, se JIT-compila solo el método al que llamas y únicamente cuando éste llama a otro método se JIT-compila el siguiente método. De esa manera se acelera la velocidad de carga.

    Para los casos en que esto no es aceptable, hay una utilidad que permite dejar completamente compilado un ejecutable de tipo MSIL, convirtiéndolo en ejecutable "de verdad" (que solo vale para la máquina en la que se hizo esta operación). Normalmente, esto se hace desde el instalador de la aplicación, si es que se trata de una aplicación lo bastante crítica como para requerir esta optimización. En la mayoría de los casos, se deja el exe con MSIL y carga suficientemente rápido; el JIT en la práctica no se nota.

    • Marcado como respuesta DaniDeveloper lunes, 28 de octubre de 2019 13:38
    lunes, 28 de octubre de 2019 11:50
  • Gracias Leandro, esto es lo que andaba buscando. Una introducción sobre el tema. Gracias.
    lunes, 28 de octubre de 2019 11:53
  • Muchas gracias Alberto.

    Muy buena información.

    lunes, 28 de octubre de 2019 13:38