Az SVC technológia kapcsán (ami egyébként kivételesen ötletes) az az érzése lehet az embernek, mintha nem lett volna rá idő rendesen beintegrálni a Visual Studio 2008-ba, ugyanis nincs módunk a kliens stub-ok generálására studióból. Vagy legalábbis én még nem jöttem rá erre. De sebaj, van megoldás. Írni kell két bat filét.
svc.bat
@echo off echo Starting servicestub generation cmd /V:ON /C svcgen.bat
svcgen.bat
@echo off set serviceList=system/system.svc,other/other1.svc,common/common.svc,admin/admin.svc set serviceHost=http://localhost:3467/services/ set outputDir=.\client\serviceproxy\servicestubs\ set outputConfig=.\..\..\..\services_app.config set resourceFile=.\..\common\bin\Debug\common.dll set svcTool="c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SvcUtil" set wsdlPostFix=?WSDL set commonParams=/noLogo /target:code /l:cs /ser:datacontractserializer /importxmltypes set cmdLine=%commonParams% /r:%resourceFile% /config:%outputConfig% /d:%outputDir% del %outputDir%%outputConfig% del /Q %outputDir%\*.* set firstrun=true for %%a in (%serviceList%) do ( echo Processing service: %%a echo ------------------- rem echo %svcTool% %cmdLine% %serviceHost%%%a%wsdlPostFix% if "!firstrun!" == "false" ( %svcTool% %cmdLine% /mergeConfig %serviceHost%%%a%wsdlPostFix% ) if "!firstrun!" == "true" ( %svcTool% %cmdLine% %serviceHost%%%a%wsdlPostFix% set firstrun=false ) )
A szolgáltatásokat a serviceList listába kell felvenni, vesszővel elválasztva.
A /r: paraméter arra szolgál, hogy azon osztályok, amik szerepelnek a megadott dll-ben nem kerülnek legenerálásra a kliens oldalon.
Ha igazán széppé akarjuk tenni a megoldást, akkor kell írnunk egy alkalmazást, ami a végeredményül kapott services_app.config fájlt bele tudja illeszteni az app.config fájl megfelelő xpath helyére.