Freigeben über


MSBuild 4.0 oder Visual Studio 2010 kann möglicherweise keine 32-Bit-Anwendung für .NET Framework 3.5, 3.0 oder 2.0 auf einem x64-Computer kompilieren

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem MSBuild 4.0 oder Microsoft Visual Studio 2010 eine 32-Bit-Anwendung, die auf .NET Framework 3.5, 3.0 oder 2.0 auf einem x64-Computer ausgerichtet ist, nicht kompilieren kann.

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

Symptome

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 verweist. Das ausgewählte Zielframework ist 3.5, 3.0 oder 2.0.

Sie erhalten möglicherweise die folgende Fehlermeldung:

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

Das Diagnose-Build-Log zeigt, dass die Aufgabe GenerateResource scheitert.

Ursache

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

Beschluss

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

  1. Schließen Sie alle Instanzen von Visual Studio.

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

  3. Geben Sie den Befehl ein:

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

  5. Fügen Sie unter dem Abschnitt <ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture> die Eigenschaft 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 zuvor rückgängig machen.

Das CorFlags-Konvertierungstool CorFlagsCorFlags.exe kann Ihnen dabei helfen.