MSBuild 4.0 o Visual Studio 2010 puede no compilar una aplicación de 32 bits destinada a .NET Framework 3.5, 3.0 o 2.0 en un equipo x64
Este artículo le ayuda a resolver el problema por el que MSBuild 4.0 o Microsoft Visual Studio 2010 no puede compilar una aplicación de 32 bits destinada a .NET Framework 3.5, 3.0 o 2.0 en el equipo x64.
Versión original del producto: Visual Studio 2010
Número de KB original: 2028833
Síntomas
Va a compilar una aplicación destinada a la configuración x86 en un equipo x64 con Visual Studio 2010. El proyecto contiene un archivo de recursos que hace referencia a un ensamblado de 32 bits. La plataforma de destino seleccionada es 3.5, 3.0 o 2.0.
Puede recibir el siguiente error:
Form1.resx(161,5):error RG0000: No se pudo cargar el archivo o ensamblado "<file_name>" o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto. Línea 161, posición 5.
El registro de compilación de diagnóstico muestra que se produce un error en la tarea GenerateResource .
Causa
Resgen.exe en <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\vx.x\bin, que forma parte de Windows SDK, se marca como MSIL, por lo que se ejecutará como un proceso de 64 bits. Intentará cargar un ensamblado de 32 bits y producirá un error.
Solución
Para solucionar este problema, debe realizar los pasos siguientes:
Cierre todas las instancias de Visual Studio.
En la subcarpeta Visual Studio Tools, abra un símbolo del sistema Visual Studio con privilegios elevados (2010) (con la opción Ejecutar como administrador). Cambie el directorio a
<system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\.Emita el comando:
corflags /32bit+ ResGen.exe /forceAbra <project_name>.csproj en el Bloc de notas.
Agregue la propiedad
<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>en laPropertyGroupsección . Guarde y cierre el archivo csproj.
Más información
Si desea compilar un archivo .resx que haga referencia a un ensamblado de 64 bits destinado a v3.5, v3.0 o v2.0, es posible que tenga que revertir esta solución alternativa antes de hacerlo.
CorFlagsCorFlags.exe (Herramienta de conversión CorFlags) puede ayudarte.