Determinar qué versión del motor de tiempo de ejecución debe cargarse
Common Language Runtime utiliza la siguiente información para determinar la versión del motor de tiempo de ejecución que se debe cargar para una aplicación.
- Versiones disponibles del motor de tiempo de ejecución.
- Versiones del motor de tiempo de ejecución compatibles con la aplicación.
Versiones disponibles del motor de tiempo de ejecución
El motor de tiempo de ejecución determina las versiones que están disponibles mediante la enumeración de claves y valores que se encuentran en el Registro en HKLM\SOFTWARE\Microsoft\.NETFramework\policy. Cada clave identifica la versión principal y secundaria del motor de tiempo de ejecución. Los valores en cada clave principal y secundaria identifican el número de la versión de compilación. Por ejemplo, la clave HKLM\SOFTWARE\Microsoft\.NETFramework\policy\v1.0 con el valor 3705 indica que está instalada la versión 1.0.3705 de .NET Framework.
Un directorio con el mismo número de versión que el especificado en el Registro debe también existir en la raíz de la instalación de .NET Framework. Los nombres de directorio van precedidos de la letra v. Por ejemplo, la versión 1.0.3705 de .NET Framework estaría instalada en <InstallRoot>\v1.0.3705.
Versiones compatibles del motor de tiempo de ejecución
El motor de tiempo de ejecución utiliza el archivo de configuración de la aplicación y el encabezado del archivo ejecutable portable (PE) para determinar la versión del motor de tiempo de ejecución que admite una aplicación. Si no hay un archivo de configuración de la aplicación, el motor de tiempo de ejecución carga la versión especificada en el encabezado del archivo PE, siempre que esté disponible.
Si existe un archivo de configuración de la aplicación, el motor de tiempo de ejecución determina la versión que debe cargar en función de los resultados del proceso siguiente:
El motor de tiempo de ejecución examina el elemento <supportedRuntime> del archivo de configuración de la aplicación. Si se admiten una o varias de las versiones del motor de tiempo de ejecución especificadas en el elemento <supportedRuntime>, el motor de tiempo de ejecución carga la versión especificada en el primer elemento <supportedRuntime>. Si esta versión no está disponible, el motor de tiempo de ejecución examina el siguiente elemento <supportedRuntime> e intenta cargar la versión del motor de tiempo de ejecución especificada. Si esta versión del motor de tiempo de ejecución tampoco está disponible, examina los siguientes elementos <supportedRuntime>. Si ninguna de las versiones de motor de tiempo de ejecución está disponible, el motor de tiempo de ejecución no se carga y presenta un mensaje al usuario (vea el paso 4).
Si el elemento <supportedRuntime> no está presente, el motor de tiempo de ejecución examina el elemento <requiredRuntime> del archivo de configuración de la aplicación. Este elemento sólo se utiliza en las aplicaciones de la versión 1.0 del motor de tiempo de ejecución. Si la versión del motor de tiempo de ejecución especificada en el elemento <requiredRuntime> existe, el motor de tiempo de ejecución carga esa versión. Si la versión especificada no está disponible, el motor de tiempo de ejecución no se carga y presenta un mensaje al usuario (vea el paso 4). Si el archivo de configuración de la aplicación no contiene el elemento <requiredRuntime>, el proceso continúa en el paso 3.
El motor de tiempo de ejecución lee el encabezado del archivo PE del archivo ejecutable de la aplicación. Si la versión del motor de tiempo de ejecución especificada en el encabezado del archivo PE está disponible, el motor de tiempo de ejecución carga esa versión. Si la versión del motor de tiempo de ejecución especificada no está disponible, el motor de tiempo de ejecución busca la versión determinada por Microsoft en el encabezado del archivo PE. Si no se encuentra esa versión, el proceso continúa en el paso 4.
El motor de tiempo de ejecución muestra un mensaje en el que se indica que la versión del motor de tiempo de ejecución compatible con la aplicación no está disponible. El motor de tiempo de ejecución no se carga. Si este proceso se realiza para un servicio o algún otro evento que no implica la interacción del usuario, el mensaje se escribe en el registro de eventos si se establece la clave del registro HKLM\Software\Microsoft\.NETFramework\NoGuiFromShim en 1.
Nota Una vez cargada la versión del motor de tiempo de ejecución, las redirecciones del enlace de ensamblados pueden especificar que se ha cargado una versión distinta de un determinado ensamblado de .NET Framework. Estas redirecciones de enlace de ensamblados afectan sólo al ensamblado redirigido.
Vea también
Redirección de enlace de ensamblados | Encontrar información de versión del motor de tiempo de ejecución Configurar la redirección del enlace de ensamblados | Fundamentos de la ejecución simultánea