VS 2008 Post Build Step è un affare divertente
-
01-07-2019 - |
Domanda
Ok, ecco la ripartizione del mio progetto:Ho un progetto web con una sottocartella "Script".Quella cartella contiene alcuni file JavaScript e una copia di JSMin.exe insieme a un file batch che esegue JSMin.exe su alcuni file.Ho provato a impostare un passaggio post-compilazione di "chiamata" $(ProjectDir)Scripts\jsmin.bat"'.Quando eseguo la build, il file batch viene sempre "uscito dal codice 1." Questo accade attraversando Visual Studio o attraverso la riga di comando MSBuild.Posso eseguire manualmente il file batch dalla cartella Scripts e sembra funzionare come previsto, quindi non sono sicuro di quale sia il problema.La chiamata $(ProjectDir)Scripts\jsmin.bat è tra virgolette perché $(ProjectDir) potrebbe contenere spazi (e in effetti li ha sulla mia macchina).Non sono sicuro di cosa fare a questo punto.Ho provato a rimuovere il contenuto del file batch come passaggio di post-compilazione, ma neanche questo sembra funzionare.
Idealmente, vorrei risolvere questo problema tramite i passaggi post o pre-compilazione in modo che il gestore della build non debba eseguire un passaggio aggiuntivo durante la distribuzione del codice.
Grazie!
Soluzione
Se nella fase di creazione personalizzata è presente qualcosa che restituisce un codice di errore, puoi aggiungere:
exit 0
come l'ultima riga del passaggio di creazione.Ciò impedirà che la build fallisca.
Altri suggerimenti
Una soluzione funzionante per questo che utilizzo:
CD $(DirProgetto)
DoStuff.bat
Non sono necessari comandi di chiamata o altro, questo ovviamente se hai il file nella directory del tuo progetto.
I tuoi script o file batch utilizzano internamente riferimenti al percorso?
Ho scoperto che i file batch non funzioneranno correttamente se i riferimenti al percorso non sono completamente qualificati.
Esempio:un file batch chiamato DoStuff.bat utilizza il comando echo per aggiungere un file di testo.
Questo sì non lavorare all'interno del file .bat:
echo "test" >>"test.txt"
Questo funziona all'interno del file .bat:
echo "test" >>"C:\Temp\CompileTest\test.txt"
Lo studio visivo Riga di comando dell'evento post-compilazione è questo:
call "C:\Temp\CompileTest\DoStuff.bat"
In qualche modo, e non ho familiarità con le specifiche di come escono i file .bat, ma JSMin o l'esecuzione del file batch escono con un codice di ritorno diverso da zero.
Hai provato a eseguire direttamente gli script (ad es.non tramite JSMin.bat) come parte della post-compilazione?
Modificare:Sembra che ce l'abbia Hallgrim.
Torniamo ora a questo problema (ho dovuto spostarmi su altri fuochi per un po')
@Jonathan Webb - Ho provato alcune idee ma senza successo.In effetti ho appreso che stiamo facendo qualcosa di simile (chiamare un programma esterno utilizzando attività di post compilazione) in altri progetti interni.Sono propenso a credere che si tratti di un'interazione con lo strumento jsmin.exe o di qualche altro stupido errore da parte mia.
Tuttavia, non tutto è perduto, un altro sviluppatore ha rivolto la mia attenzione allo YUI Compressor e al suo implementazione in .NET.Attraverso alcune manipolazioni manuali di .csproj sono riuscito a raggiungere i miei obiettivi e anche di più (inclusa la compressione CSS)!