2010-12-08 5 views
9

Weiß jemand, wenn Windows 7 wird irgendwie zurück auf die "ProgramFiles (X86)" Umgebungsvariable verschoben, wenn die Variable "ProgramFiles" verwendet wird?Windows 7 64-Bit-Programmdateien Umgebungsvariable

Wir haben eine Situation, in der ein Entwickler Visual Studio und die Proj-Datei Verweise Assemblys mit "$ (ProgramFiles)" verwendet. Die Maschine ist 64-Bit und die Variable "ProgramFiles" verweist auf "C: \ Programme", die Assemblys befinden sich jedoch in "C: \ Program Files (X 86)" noch das Projekt erstellt. Es wird nicht erstellt, wenn der literale Pfad "C: \ Programme" verwendet wird. Der Compiler sagt, dass es die Assemblys nicht finden kann

+4

Hans Antwort ist richtig und Sie können mehr Informationen finden Sie hier: http://msdn.microsoft.com/en-us/library/aa384232%28VS.85%29.aspx –

Antwort

6

Ja, Windows Ordnet Ordner- und Dateizugriff automatisch zu c:\program files für 32-Bit-Programme zu c:\program files (x86) zu. Visual Studio sowie MSBuild sind 32-Bit-Programme. Dasselbe gilt für c: \ windows \ system32 vs c: \ windows \ syswow64.

+0

Danke. Das ist was ich dachte. – PhilBrown

+1

Ich glaube nicht, dass dies wahr ist, außer für die Verwendung der Umgebungsvariable% ProgramFiles%, die automatisch den richtigen Pfad abhängig von der Bitterkeit des Prozesses bereitstellt. Der Grund dafür, dass die OP-Situation funktioniert, ist, dass VS 32-Bit ist und "$ (ProgramFiles)" bezieht sich auf die Umgebungsvariable% ProgramFiles%, die 'C: \ Programme (x86)' für einen 32-Bit-Prozess auf einer 64 ist -Bit OS. Wenn ich eine 64-Bit-Exe in 'C: \ Programme \ Acme \ foo64.exe' von einem 32-Bit-Prozess aus starte, schalte ich einfach den Pfad auf 'C: \ Programme (x86) \ Acme \ foo64.exe'. –