2013-02-15 87 views
5

我需要一種基於* .xsd文件在構建期間自動重新生成* .cs文件的方法,最好不涉及任何自定義加載項。這也需要在CI構建上運行。在構建過程中自動化xsd.exe

我不確定我是否錯過了某些明顯的東西,或者這對我來說真的很棘手?

+0

預生成事件應該爲此工作。 – leppie 2013-02-15 15:39:18

回答

9

我使用這個腳本:

@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% 

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

這是一個預生成事件將遞歸解析名爲XSDs項目根文件夾中的每個.xsd文件,並分配一個基於文件夾結構的名稱空間。

+0

謝謝,這對我有效!有時最明顯的答案是最難找到的答案。 – 2013-02-15 16:37:20

+0

@MarcinSeredynski - 絕對正確。我很高興它有幫助! – Bobson 2013-02-15 16:40:07

+1

要設置您自己的命名空間,您可以將第三行中的「XSDs」字符串字面值替換爲您的命名空間或%3,以便能夠將第三個參數中的命名空間傳遞給此批處理文件 – Woodman 2013-11-01 14:49:54