2015-07-22 47 views
18

Così oggi ho deciso di aggiornare a Visual Studio 2015 (in precedenza, eseguendo la versione RC senza difficoltà) ma ora al mio progetto non piace l'evento della riga di comando largeaddressaware.LargeAddressAware Visual Studio 2015 C#

Ho un evento di post-generazione di:

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

Tuttavia ottengo il seguente errore:

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

Qualche idea?

+0

Separare ciascun comando con ';' e riprovare. –

+0

Purtroppo quella è stata la prima cosa che ho provato, non ha molto senso che questo ha dovuto cambiare quando funziona perfettamente nella versione RC 2015 ... E le due directory di posizione sono corrette, ho controllato manualmente entrambe e entrambe i file esistono dove dovrebbero essere :( – Rolodium

+0

mi sembra che esegua l'intero evento post build come un unico comando –

risposta

3

Il problema è stato causato durante la disinstallazione di Visual Studio 2015 versione RC. Non rimuove tutte le directory e quindi l'installazione della versione completa non ha esito positivo. La soluzione semplice è disinstallare la versione RC e riavviare. Quindi eliminare manualmente la directory C: \ Programmi (x86) \ Microsoft Visual Studio 14.0. Quindi puoi installare la nuova versione senza problemi.

Credito Hans Passant per l'identificazione di questo problema.

46

io chiamo uno script cmd come 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 

Verifica per la variabile d'ambiente secondo il VS installato (prima 2015, successiva al 2013, il prossimo 2012 e, infine, 2010) e ora tutti i percorsi vanno bene .

Se non riesce ancora a trovare l'exe, assicurarsi che l'opzione C++ Tools nel programma di installazione sia selezionata. Di default VS2015 installa solo C# e VB.net, ma non C++ con i suoi strumenti. Qui bisogna attivarlo sotto personalizzato nel setup:

enter image description here

+6

Grazie a una tonnellata, questo era esattamente il problema che avevo! Non avevo installato gli strumenti C++ ... – SvenG

+0

Questo è ciò che ha funzionato per me, tuttavia ho notato anche che un comando postbuild esistente che avevo ricevuto da un progetto migrato VS2013 aveva caratteri di citazione speciali che apparentemente avevano funzionato prima. Cambiando questi a virgolette neutre ha funzionato. –

+0

Se avessi già C++ e f # installati, come posso disinstallarli? È possibile? – eddy

1

Il mio problema con questo, che stavo chiamando vcvarsall.bat dalla posizione sbagliata prima. Sono stato aggiornato a Visual Studio 2017 e vcvarsall.bat si era spostato. (Quindi aveva EditBin.exe. Ci sono 4 posizioni per ora, anche se ho deciso di usare qualunque cosa ci fosse nel percorso.) Risolto il problema, risolto il problema. Ecco il mio file post-build per il tuo scopo.

:: 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 
Problemi correlati