Dela via


MSBuild 4.0 eller Visual Studio 2010 kan misslyckas med att kompilera ett 32-bitarsprogram som är avsett för .NET Framework 3.5, 3.0 eller 2.0 på en x64-dator

Den här artikeln hjälper dig att lösa problemet där MSBuild 4.0 eller Microsoft Visual Studio 2010 inte kan kompilera ett 32-bitarsprogram som är avsett för .NET Framework 3.5, 3.0 eller 2.0 på x64-datorn.

Ursprunglig produktversion: Visual Studio 2010
Ursprungligt KB-nummer: 2028833

Symptom

Du skapar ett program som är avsett för x86-konfiguration på en x64-dator med Visual Studio 2010. Projektet innehåller en resursfil som refererar till en 32-bitars sammansättning. Målramverket som valts är 3.5, 3.0 eller 2.0.

Du kan få följande fel:

Form1.resx(161,5):error RG0000: Det gick inte att läsa in filen eller sammansättningen "<file_name>" eller något av dess beroenden. Ett försök gjordes att läsa in ett program med ett felaktigt format. Linje 161, position 5.

Diagnostikbyggloggen visar att uppgiften GenerateResource misslyckas.

Orsak

Resgen.exe i <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\vx.x\bin, som är en del av Windows SDK, är markerad som MSIL, så den körs som en 64-bitarsprocess. Den försöker läsa in en 32-bitars sammansättning och misslyckas.

Lösning

För att kunna kringgå det här problemet måste du utföra följande steg:

  1. Stäng alla instanser av Visual Studio.

  2. Från undermappen Visual Studio Tools öppnar du en upphöjd Visual Studio-kommandotolk (2010) (med alternativet Kör som administratör ). Ändra katalog till <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\.

  3. Utfärda kommandot:

    corflags /32bit+ ResGen.exe /force
    
  4. Öppna <project_name.csproj> i Anteckningar.

  5. Lägg till egenskapen <ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture> under avsnittet PropertyGroup . Spara och stäng csproj-filen.

Mer information

Om du vill skapa en .resx-fil som refererar till en 64-bitars sammansättning riktad mot v3.5, v3.0 eller v2.0 kan du behöva ändra den här lösningen innan du gör det.

CorFlagsCorFlags.exe (CorFlags Conversion Tool) kan hjälpa dig.