2013-02-15 20 views
5

Ho bisogno di un modo per rigenerare automaticamente i file * .cs durante la compilazione, in base ai file * .xsd, preferibilmente senza coinvolgere alcun componente aggiuntivo personalizzato. Questo deve essere eseguito anche nel build CI.Automatizza xsd.exe durante la compilazione

Non sono sicuro se mi manca qualcosa di ovvio, o è davvero complicato come sembra a me?

+0

L'evento di pre-build dovrebbe funzionare per questo. – leppie

risposta

9

Io uso questo script:

@echo off 
cd %1 
call :treeProcess %2 "XSDs" 
cd .. 
goto :eof 

:treeProcess 
rem From http://stackoverflow.com/a/8398621/298754 
echo Processing %2 
for %%f in (*.xsd) do call :buildXSD %%f %1 %2 %%~nf 
for /D %%d in (*) do (
    cd %%d 
    call :treeProcess %1 %2.%%d 
    cd .. 
) 
exit /b 

:buildXSD 
%2 %1 /c /n:%3.%4% 

con un evento prebuild di

call "$(ProjectDir)"XSDBuilder.bat "$(ProjectDir)"\XSDs "$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\@InstallationFolder)bin\xsd.exe" 

Questo sarà ricorsivamente analizzare tutti i file XSD in una cartella nella directory principale progetto chiamato XSDs, e assegnerà un spazio dei nomi basato sulla struttura delle cartelle.

+0

Grazie, questo ha funzionato per me! A volte la risposta più ovvia è la più difficile da trovare. –

+0

@MarcinSeredynski - Assolutamente vero. Sono contento che aiuti! – Bobson

+1

Per impostare il proprio spazio dei nomi è possibile sostituire la stringa letterale "XSDs" sulla terza riga con lo spazio dei nomi o con% 3, per poter passare lo spazio dei nomi nel terzo parametro a questo file batch – Woodman

Problemi correlati