Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
Schließen Sie alle Instanzen von Visual Studio.
Ö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\
.Geben Sie den Befehl ein:
corflags /32bit+ ResGen.exe /force
Öffnen Sie <project_name.csproj> in Notepad.
Fügen Sie unter dem Abschnitt
<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>
die EigenschaftPropertyGroup
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.