Delay signing a TFS build server podruhé
Ve firmě jsme před nějakým časem začali používat na vývojářských počítačích delay signing s následným vytvořením plného podpisu při buildu na TFS build serveru. Nastavení vývojářských počítačů pro podporu delay signingu jsem popisoval v tomto článku . K vytvoření plného podpisu byl použit vlastní build task, který spouští nad každou zkompilovanou assembly nástroj sn.exe. Implementaci tasku a jeho použití jsem se věnoval v dalším článku.
Řešení s pomocí vlastního tasku bylo sice funkční, ale bylo poměrně pomalé a občas nestabilní, zejména při větším zatížení build serveru. Se zvyšujícím se počtem projektů v TFS tyto problémy narůstaly a bylo nutné najít jiné řešení.
Řešením se nakonec ukázalo využití konfiguračního elementu CustomPropertiesForBuild v projektovém souboru TFSBuild.proj. Tento element je možné využít k předání vlastností MSBuildu (+ případnému přepsání existujících) pro build jednotlivých projektů v solution. Výchozí nastavení pro “delay signing” jednotlivých projektů je tak možné přepsat na plné podepsání následujícím způsobem:
<CustomPropertiesForBuild>
SignAssembly=true;DelaySign=false;AssemblyOriginatorKeyFile=c:\Keys\firemniKlic.snk
</CustomPropertiesForBuild>
Za inspiraci díky http://ozgrant.com/2008/03/13/strong-name-your-assemblies-with-team-build-using-a-private-key/ a pokud by někdo chtěl experimentovat s uložením privátního klíče do úložiště klíčů namísto souboru, tak to je možné také – viz http://blogs.msdn.com/nagarajp/archive/2005/11/08/490501.aspx .