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!

È stato utile?

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)!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top