Visual Studio 2005-2008 con Access 64 bits en Windows 7

Visual Studio y Microsoft Access en Windows 7 de 64bits: error al ejecutar proyectos con bases de datos de Access en entornos de 64 bits

Cuando se ejecuta un proyecto de Visual Studio 2005 o 2008 en una plataforma Windows 7 de 64 bits, si el proyecto contiene alguna referencia a componentes COM de 32 bits, como pasa por ejemplo cuando el proyecto se conecta con una base de datos de Microsoft Access, suele haber un error que impide que el proyecto se ejecute correctamente.

Esto se debe a que la mayoría de los componentes COM de 32 bits no funcionan bien como procesos de 64 bits en plataformas de 64 bits aunque sí pueden funcionar como procesos de 32 bits en plataformas de 64 bits. Las aplicaciones de VB y C# que hacen referencia a alguno de esos componentes COM de 32 bits no pueden funcionar pues intentan hacerlo como procesos de 64 bits.

Los compiladores de VB y C# en Visual Studio 2005 y 2008 utilizan la propiedad platform target para determinar si la aplicación ha de correr como proceso de 32 o de 64 bits. Por defecto esta propiedad tiene asignado el valor «AnyCPU» lo que determina que se ejecute de acuerdo al tipo de plataforma (Windows 7 de 32 o de 64).
Para resolver este problema la propiedad platform target ha de tener el valor «X86» en los proyectos VB y C# de este tipo. Para ello hay que:

Proyectos VB

  1. botón dcho. en el proyecto en el Explorador de Soluciones > Propiedades
  2. pestaña Compilar
  3. botón Opciones avanzadas de Compilación
  4. propiedad Target CPU = X86.

Proyectos C#

  1. botón dcho. en el proyecto en el Explorador de Soluciones > Propiedades
  2. pestaña Compilar
  3. propiedad Target CPU = X86.

Proyectos de las versiones Express

Las versiones express de VB y C# no muestran esta propiedad en el entorno de desarrollo. En su lugar hay que modificar el archivo de proyecto .csproj o .vbproj, se puede hacer desde el propio IDE de Visual Studio o desde editores de texto o XML buscando la primera aparición de la sección PropertyGroup y añadiendo bajo ella esta línea:

<PlatformTarget>x86</PlatformTarget>.