Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo ajuda a resolver o problema em que o MSBuild 4.0 ou Microsoft Visual Studio 2010 não consegue compilar um aplicativo de 32 bits direcionado para .NET Framework 3.5, 3.0 ou 2.0 em uma máquina x64.
Versão original do produto: Visual Studio 2010
Número original do KB: 2028833
Sintomas
Você está construindo um aplicativo direcionado para configuração x86 em uma máquina x64 com o Visual Studio 2010. O projeto contém um arquivo de recurso que faz referência a um assembly de 32 bits. A estrutura de destino selecionada é 3.5, 3.0 ou 2.0.
Você pode obter o seguinte erro:
Form1.resx(161,5):error RG0000: Não foi possível carregar o arquivo ou assembly "<file_name>" ou uma de suas dependências. Foi feita uma tentativa de carregar um programa com um formato incorreto. Linha 161, posição 5.
O log de diagnóstico mostra que a tarefa GenerateResource falha.
Motivo
Resgen.exe em <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\vx.x\bin
, que faz parte do Windows SDK, está marcado como MSIL, portanto, será executado como um processo de 64 bits. Ele tentará carregar um assembly de 32 bits e falhará.
Resolução
Para contornar esse problema, você precisa realizar as seguintes etapas:
Feche todas as instâncias do Visual Studio.
Na subpasta Ferramentas do Visual Studio, abra um Prompt de Comando do Visual Studio (2010) elevado (usando a opção Executar como administrador). Alterar diretório para
<system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\
.Emita o comando:
corflags /32bit+ ResGen.exe /force
Abra <project_name.csproj> no Bloco de Notas.
Adicione a propriedade
<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>
debaixo da seçãoPropertyGroup
. Salve e feche o arquivo csproj.
Mais informações
Se você deseja construir um arquivo .resx que faz referência a um assembly de 64 bits direcionado para v3.5, v3.0 ou v2.0, pode ser necessário reverter essa solução alternativa antes de fazer isso.
CorFlagsCorFlags.exe (Ferramenta de conversão CorFlags) pode ajudar você.