Haluan batissani buildata VS solutionin sen jälkeen tehdä lisää komentoja.
Tämä laittaa buildauksen taustalle ja hyppää heti seuraavaan komentoon:
"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/devenv.exe" E:\source/solution.sln /Build "Release|x64" /Out E:\startup_build.log
Tämä kokeilu avaa Visual Studion ja hyppää taas heti seuraavaan komentoon.
start /WAIT "C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/devenv.exe" E:\source/solution.sln /Build "Release|x64" /Out E:\startup_build.log
Windows batch ei ole mulle yhtään tuttua. Miten odotan buildin valmistumista?
start /wait "ohjelma.exe" start /w "ohjelma.exe"
Pitäisi kyllä toimia. Kokeile laittaa vielä alkuun tyhjät lainausmerkit, jos vaikka Windows erehtyy luulemaan "Release|x64" kohtaa ikkunan otsikoksi. Jos ei kuitenkaan onnista, niin voit tehdä silmukan, jossa tarkistat onko tietty prosessi käynnissä:
tasklist /fi "imagename eq ohjelma.exe" | find /i "ohjelma.exe" > nul if %errorlevel%==1 ( echo Ohjelma not running ) else ( echo Ohjelma running )
aaro: kokeilin järkimmäistä komentoani muuttaa /WAIT -> /w, mutta ei tapahtunut muutosta.
Olisikohan ongelma komentoni parametreista? Tarvisiko koko komennon (ensimmäinen koodisample) ympärille sulut?
Käyttis: Windows 8
Komentorivi normaalisti odottaa, että ohjelma sulkeutuu. Ongelmasi ei siis ole komentorivissä vaan siinä, että devenv.exe sulkeutuu. Ilmeisesti devenv.exe vain käynnistää taustalle varsinaisen ohjelman ja poistuu sitten itse.
En tunne Visual Studiota, mutta arvelen, että devenv.exe ei ehkä ole ainoa tai edes paras ohjelma komentoriviltä kääntämiseen.
Touho: Edellinen viestini lähti liian aikaisin ja näköjään ehdit lukea sen ennen muokkausta.
Metabolix on luultavasti oikeassa ja kenties kometo msbuild on tarkoituksiisi sopivampi. Täällä myös vihjataan, että vaihtamalla devenv.exe -> devenv.com, pitäisi toimia.
msbuild on työkalu jota tulisi solution -tasolla käyttää. jos taas haluat varsinaista kääntäjää käyttää yksittäisiin tiedostoihin, voit käyttää csc.exe -tiedostoa: MSDN: Command-line Building With csc.exe
Ratkaisin ongelman niin, että tein toisen batin, joka kutsuu tuota kääntökomentoa. tällöin start /WAIT toinen_bat.bat toimii odotetusti. Purkkaratkaisu kelpaa. :)
Kaiken järjen mukaan startin pitäisi olla tuossa turha, ja ainakin toisen batin – jossa on ilmeisesti vain yksi komento – voisi varmaankin korvata yksinkertaisesti rivillä cmd /c komento
, jottei tarvitse sählätä monella tiedostolla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.