MSBuild 4.0 oder Visual Studio 2010 können eine 32-Bit-Anwendung, die für .NET Framework 3.5, 3.0 oder 2.0 auf einem x64-Computer ausgerichtet ist, möglicherweise nicht kompilieren.

Dieser Artikel hilft Ihnen bei der Behebung des Problems, bei dem MSBuild 4.0 oder Microsoft Visual Studio 2010 keine 32-Bit-Anwendung kompilieren kann, die für .NET Framework 3.5, 3.0 oder 2.0 auf einem x64-Computer entwickelt wurde.

Ursprüngliche Produktversion:   Visual Studio 2010
Ursprüngliche KB-Nummer:   2028833

Problembeschreibung

Sie erstellen eine Anwendung für die x86-Konfiguration auf einem x64-Computer mit Visual Studio 2010. Das Projekt enthält eine Ressourcendatei, die auf eine 32-Bit-Assembly bezieht. Das ausgewählte Zielframework ist 3.5, 3.0 oder 2.0.

Möglicherweise wird der folgende Fehler angezeigt:

Form1.resx(161,5):error RG0000: Datei oder Assembly "<file_name>" oder eine seiner Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden. Zeile 161, Position 5.

Das Diagnose-Buildprotokoll zeigt, dass die Aufgabe "GenerateResource" fehlschlägt.

Ursache

Resgen.exe in , das Teil des Windows SDK ist, wird als MSIL gekennzeichnet, sodass es als <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\vx.x\bin 64-Bit-Prozess ausgeführt wird. Es wird versucht, eine 32-Bit-Assembly zu laden, und es wird ein Fehler fehlert.

Lösung

Um dieses Problem zu beheben, müssen Sie die folgenden Schritte ausführen:

  1. Schließen Sie alle Instanzen Visual Studio.

  2. Öffnen Sie im Visual Studio "Tools" eine Eingabeaufforderung mit Visual Studio (2010) mit erhöhten Rechten (mit der Option "Als Administrator ausführen"). Ändern Sie das Verzeichnis in <system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\ .

  3. Verwenden Sie den folgenden Befehl:

    corflags /32bit+ ResGen.exe /force
    
  4. Öffnen <project_name> Sie .csproj im Editor.

  5. Fügen Sie die Eigenschaft <ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture> unter dem Abschnitt PropertyGroup hinzu. Speichern und schließen Sie die Csproj-Datei.

Weitere Informationen

Wenn Sie eine .resx-Datei erstellen möchten, die auf eine 64-Bit-Assembly für v3.5, v3.0 oder v2.0 verweist, müssen Sie diese Problemumgehung möglicherweise rückgängig machen, bevor Sie dies tun.

CorFlagsCorFlags.exe (CorFlags-Konvertierungstool) hilft Ihnen möglicherweise.