none
Arquitectura del procesador RRS feed

  • Pregunta

  • Hola

    Al compilar un proyecto pequeño me aparece esta advertencia y no se que hacer

    Advertencia 1 La arquitectura del procesador del proyecto que se va a compilar "MSIL" y la arquitectura del procesador de la referencia "Microsoft.Windows.Design.Extensibility, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86", "x86", no coinciden. Esta falta de coincidencia puede causar errores en tiempo de ejecución. Cambie la arquitectura del procesador de destino del proyecto mediante el Administrador de configuración para alinear las arquitecturas de procesador entre el proyecto y las referencias, o tome una dependencia de las referencias con una arquitectura de procesador que coincida con la arquitectura del procesador de destino del proyecto. QueHoraEs

    racias por la ayuda


    Pedro López

    viernes, 4 de septiembre de 2015 23:09

Respuestas

  • "Pearloga" escribió:

    > Al compilar un proyecto pequeño me aparece esta advertencia y no se que hacer
    > Advertencia 1  La arquitectura del procesador del proyecto que se va a compilar "MSIL" y
    > la arquitectura del procesador de la referencia "Microsoft.Windows.Design.Extensibility,
    > Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86",
    > "x86", no coinciden.

    Hola, Pedro:

    Esa advertencia se produce cuando has referenciado el mencionado ensamblado, que fue compilado para plataformas de 32 bits (x86), y tu estás queriendo compilar tu proyecto para que se ejecute en plataformas ANY CPU o X64, por lo que te está diciendo que puede haber problemas en tiempo de ejecución si el equipo de destino no tiene una arquitectura de 32 bits.

    Para dejar de recibir dicha advertencia, tienes que compilar tu proyecto explícitamente para plataformas de 32 bits (x86), ya que parece ser que el procesador del equipo que estás utilizando tiene una arquitectura de 64 bits (x64).

    Entra a las Propiedades del proyecto y modifica la CPU de destino, tal y como muestra la siguiente captura de pantalla:


    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Pearloga sábado, 5 de septiembre de 2015 8:03
    sábado, 5 de septiembre de 2015 6:59
    Moderador
  • "Joseba Rguez" preguntó:

    > 1.- En CPU de destino tengo Any CPU
    >
    > ¿Esto quiere decir que el proyecto se compilará a x64 si mi sistema está en esa arquitectura?

    Quiere decir que el ensamblado se compilará para que pueda ejecutarse en cualquier tipo de plataforma, ejecutándose como una aplicación de 32 bits en una versión de Windows de 32 bits, y como una aplicación de 64 bits en una versión de Windows de 64 bits, por tanto, si este último es tu caso, la aplicación se ejecutará como una aplicación de 64 bits, lo que significa que se utilizarán los componentes de 64 bits de aquellos ensamblados que hayas referenciado en tu proyecto, o que indirectamente utilices en tu proyecto.

    Por ponerte un ejemplo de la utilización indirecta de un componente no referenciado explícitamente, te comentaré lo siguiente. Imagina que tu aplicación accede a una base de datos de Access mediante el proveedor 'Microsoft.ACE.OLEDB.12.0'. En este caso se utilizará la versión de 64 bits del citado proveedor en aquellos sistemas operativos Windows de 64 bits, y se utilizará la versión de 32 bits en las versiones de 32 bits de Windows.

    > 2.- Si compilo en x64
    >
    > ¿Funcionará en un equipo x86?

    Me imagino que habrás querido decir si la versión de Windows instalada en el equipo es de 32 bits. En este caso no funcionará al haber sido compilada explícitamente para plataformas de destino de 64 bits.

    > 3.- Si compilo en x86
    >
    > ¿Funcionará en x64 pero de manera menos eficiente?

    En este caso concreto, si la versión de Windows instalada en los equipos es de 64 bits, la aplicación se ejecutará en el Common Language Runtime de 32 bits que se ejecuta en el subsistema WOW64 en lugar de ejecutarse como una aplicación nativa de 64 bits.

    Esto último puede ocasionar verdaderos dolores de cabeza en ciertos equipos, y dependiendo de los componentes que hayas utilizado en tu aplicación. Volviendo al ejemplo de Access comentado anteriormente, te diré que al haber sido compilada la aplicación en exclusiva para plataformas de destino de 32 bits, necesariamente tendrá que estar instalada la versión de 32 bits del proveedor 'Microsoft.ACE.OLEDB.12.0'. ¿Qué sucedería si solamente tiene instalada la versión de 64 bits de dicho proveedor? Pues que la aplicación no funcionaría, por lo que tendrías que instalar en esos equipos los Componentes redistribuibles de Access 2007, los cuales únicamente están disponibles para 32 bits. También podrías instalar los Componentes de Access 2010 de 32 bits, pero siempre y cuando no se encuentre previamente instalados en el equipo los Componentes de Access 2010 de 64 bits, porque el instalador no lo permitirá, de ahí que necesariamente tengas que instalar los Componentes de Access 2007.

    Si estás interesado en el tema, consulta los siguientes enlaces:

    Página Compilación, Diseñador de proyectos (Visual Basic)

    /platform (Visual Basic)

    Aplicaciones de 64 bits

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    miércoles, 17 de enero de 2018 16:22
    Moderador

Todas las respuestas

  • "Pearloga" escribió:

    > Al compilar un proyecto pequeño me aparece esta advertencia y no se que hacer
    > Advertencia 1  La arquitectura del procesador del proyecto que se va a compilar "MSIL" y
    > la arquitectura del procesador de la referencia "Microsoft.Windows.Design.Extensibility,
    > Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86",
    > "x86", no coinciden.

    Hola, Pedro:

    Esa advertencia se produce cuando has referenciado el mencionado ensamblado, que fue compilado para plataformas de 32 bits (x86), y tu estás queriendo compilar tu proyecto para que se ejecute en plataformas ANY CPU o X64, por lo que te está diciendo que puede haber problemas en tiempo de ejecución si el equipo de destino no tiene una arquitectura de 32 bits.

    Para dejar de recibir dicha advertencia, tienes que compilar tu proyecto explícitamente para plataformas de 32 bits (x86), ya que parece ser que el procesador del equipo que estás utilizando tiene una arquitectura de 64 bits (x64).

    Entra a las Propiedades del proyecto y modifica la CPU de destino, tal y como muestra la siguiente captura de pantalla:


    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Pearloga sábado, 5 de septiembre de 2015 8:03
    sábado, 5 de septiembre de 2015 6:59
    Moderador
  • Hola!

    Me reengancho a este hilo porque tengo el mismo problema y algunas preguntas :)

    1.- En CPU de destino tengo Any CPU

    ¿Esto quiere decir que el proyecto se compilará a x64 si mi sistema está en esa arquitectura?

    2.- Si compilo en x64

    ¿Funcionará en un equipo x86?

    3.- Si compilo en x86

    ¿Funcionará en x64 pero de manera menos eficiente?

    Gracias. Un saludo.

    miércoles, 17 de enero de 2018 9:10
  • "Joseba Rguez" preguntó:

    > 1.- En CPU de destino tengo Any CPU
    >
    > ¿Esto quiere decir que el proyecto se compilará a x64 si mi sistema está en esa arquitectura?

    Quiere decir que el ensamblado se compilará para que pueda ejecutarse en cualquier tipo de plataforma, ejecutándose como una aplicación de 32 bits en una versión de Windows de 32 bits, y como una aplicación de 64 bits en una versión de Windows de 64 bits, por tanto, si este último es tu caso, la aplicación se ejecutará como una aplicación de 64 bits, lo que significa que se utilizarán los componentes de 64 bits de aquellos ensamblados que hayas referenciado en tu proyecto, o que indirectamente utilices en tu proyecto.

    Por ponerte un ejemplo de la utilización indirecta de un componente no referenciado explícitamente, te comentaré lo siguiente. Imagina que tu aplicación accede a una base de datos de Access mediante el proveedor 'Microsoft.ACE.OLEDB.12.0'. En este caso se utilizará la versión de 64 bits del citado proveedor en aquellos sistemas operativos Windows de 64 bits, y se utilizará la versión de 32 bits en las versiones de 32 bits de Windows.

    > 2.- Si compilo en x64
    >
    > ¿Funcionará en un equipo x86?

    Me imagino que habrás querido decir si la versión de Windows instalada en el equipo es de 32 bits. En este caso no funcionará al haber sido compilada explícitamente para plataformas de destino de 64 bits.

    > 3.- Si compilo en x86
    >
    > ¿Funcionará en x64 pero de manera menos eficiente?

    En este caso concreto, si la versión de Windows instalada en los equipos es de 64 bits, la aplicación se ejecutará en el Common Language Runtime de 32 bits que se ejecuta en el subsistema WOW64 en lugar de ejecutarse como una aplicación nativa de 64 bits.

    Esto último puede ocasionar verdaderos dolores de cabeza en ciertos equipos, y dependiendo de los componentes que hayas utilizado en tu aplicación. Volviendo al ejemplo de Access comentado anteriormente, te diré que al haber sido compilada la aplicación en exclusiva para plataformas de destino de 32 bits, necesariamente tendrá que estar instalada la versión de 32 bits del proveedor 'Microsoft.ACE.OLEDB.12.0'. ¿Qué sucedería si solamente tiene instalada la versión de 64 bits de dicho proveedor? Pues que la aplicación no funcionaría, por lo que tendrías que instalar en esos equipos los Componentes redistribuibles de Access 2007, los cuales únicamente están disponibles para 32 bits. También podrías instalar los Componentes de Access 2010 de 32 bits, pero siempre y cuando no se encuentre previamente instalados en el equipo los Componentes de Access 2010 de 64 bits, porque el instalador no lo permitirá, de ahí que necesariamente tengas que instalar los Componentes de Access 2007.

    Si estás interesado en el tema, consulta los siguientes enlaces:

    Página Compilación, Diseñador de proyectos (Visual Basic)

    /platform (Visual Basic)

    Aplicaciones de 64 bits

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    miércoles, 17 de enero de 2018 16:22
    Moderador