2015-07-22 22 views
18

So heute entschied ich, ich würde auf Visual Studio 2015 (zuvor die RC-Version ohne Probleme ausgeführt) aktualisieren, aber jetzt mag mein Projekt die largeaddressaware Befehlszeilenereignis nicht.LargeAddressAware Visual Studio 2015 C#

Ich habe einen Post-Build-Ereignis von:

call "$(DevEnvDir)..\tools\vsvars32.bat" 
editbin /largeaddressaware "$(TargetPath)" 

Jedoch habe ich die folgende Fehlermeldung erhalten:

The command "call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE..\tools\vsvars32.bat" editbin /largeaddressaware "C:\...\bin\Debug\Application.exe"" exited with code 9009

Irgendwelche Gedanken?

+0

Trennen Sie jeden Befehl mit ';' und versuchen Sie es erneut. –

+0

Leider war das das Erste, was ich ausprobiert habe, es macht nicht viel Sinn, dass dies geändert werden musste, wenn es in der RC-Version 2015 einwandfrei funktioniert ... Und die beiden Standortverzeichnisse sind korrekt, ich habe beide und beide manuell überprüft Dateien existieren, wo sie sein sollen :( – Rolodium

+0

für mich sieht es so aus, als würde es das ganze Postbuildereignis als ein Befehl ausführen –

Antwort

3

Das Problem verursacht wurde, wenn das Visual Studio 2015 RC-Version zu deinstallieren. Es entfernt nicht alle Verzeichnisse und daher ist die Installation der Vollversion nicht erfolgreich. Die einfache Lösung ist, die RC-Version zu deinstallieren und neu zu starten. Löschen Sie dann manuell das Verzeichnis C: \ Programme (x86) \ Microsoft Visual Studio 14.0. Dann können Sie die neue Version ohne Probleme installieren.

Kredit Hans Passant zur Identifizierung dieses Problems.

46

Ich nenne ein cmd Skript als Postbuildevent:

IF EXIST "%VS140COMNTOOLS%" CALL "%VS140COMNTOOLS%vsvars32.bat" 
IF EXIST "%VS120COMNTOOLS%" CALL "%VS120COMNTOOLS%vsvars32.bat" 
IF EXIST "%VS110COMNTOOLS%" CALL "%VS110COMNTOOLS%vsvars32.bat" 
IF EXIST "%VS100COMNTOOLS%" CALL "%VS100COMNTOOLS%vsvars32.bat" 

editbin.exe /LARGEADDRESSAWARE MyApp.exe 

Es prüft für die Umgebungsvariable nach dem installierten VS (erste 2015, das nächste Jahr 2013 neben 2012 und schließlich 2010) und jetzt alle Wege sind in Ordnung .

Wenn die .exe-Datei immer noch nicht gefunden werden kann, stellen Sie sicher, dass die Option C++ Tools im Installationsprogramm ausgewählt ist. Standardmäßig installiert VS2015 nur C# und VB.net, nicht jedoch C++ mit seinen Tools. Hier haben Sie es unter benutzerdefinierten im Setup zu aktivieren:

enter image description here

+6

Vielen Dank, das war genau das Problem, das ich hatte! Hatte die C++ - Tools nicht installiert ... – SvenG

+0

Das funktionierte für mich, aber ich bemerkte auch, dass ein existierender Postbuild-Befehl, den ich von einem migrierten VS2013-Projekt hatte, spezielle Anführungszeichen hatte, die anscheinend vorher funktioniert hatten. Diese zu neutralen Anführungszeichen zu ändern, funktionierte. –

+0

Wenn ich bereits C++ und F # installiert hätte, wie kann ich sie dann deinstallieren? Ist das überhaupt möglich? – eddy

1

Mein Problem damit, dass ich vcvarsall.bat von der falschen Stelle zuerst angerufen habe. Ich hatte ein Upgrade auf Visual Studio 2017 durchgeführt, und vcvarsall.bat war umgezogen. (So ​​hatte EditBin.exe. Es gibt 4 Standorte für ihn jetzt, obwohl ich geändert habe, um zu verwenden, was auch immer im Pfad war.) Das reparierend, reparierte das Problem. Hier ist meine Post-Build-Datei für Ihre Zwecke.

:: Install C++ tools to have these installed 

:: build for 32 bit  
:: VS 2012 call "$(DevEnvDir)..\..\vc\vcvarsall.bat" x86 

:: build for 64 
:: VS 2012 call "$(DevEnvDir)..\..\vc\vcvarsall.bat" amd64 
:: VS 2017 
call "$(DevEnvDir)..\..\VC\Auxiliary\Build\vcvarsall.bat" amd64 

:: "$(DevEnvDir)..\..\vc\bin\EditBin.exe" "$(TargetPath)" /LARGEADDRESSAWARE 
EditBin "$(TargetPath)" /LARGEADDRESSAWARE