Thursday, July 1, 2004

Configuration Management Application Block

Uma das limitações do Configuration Management Application Block (CMAB) é o facto de a sua configuração dever ser feita num ficheiro app.config ou web.config . Assumindo que se desenvolveu uma Assembly para usar o CMAB, e que se registou esta Assembly no GAC, onde deve ser colocada a configuração do CMAB?


A resposta trivial é: na pasta onde estiver o .EXE (caso seja uma aplicação), ou na root do site, caso seja um desenvolvimento Web. E se a aplicação que é "host" e vai usar essa Assembly for um Add-In para o Vs.Net , ou o Excel ou o Biztalk? Alguém que teve este problema ao desenvolver uma extensão para o Excel optou por colocar a configuração no Excel.exe.config (sim, na pasta C:\Program Files\Microsoft Office\OFFICENN) ...


A impossibilidade de se especificar a localização do xml de configuração é talvez a grande contrariedade desde App Block (já conhecido, aliás, por a sua configuração ser algo complexa - isto é, o conteúdo dos tais .config que não sabemos onde colocar :-)).


Uma forma possível de tentar resolver isto é colocar as configurações no Machine.Config, apesar de isto ser deselegante (não testei, já encontrei quem diz que funciona e quem diz que não funciona). E outra possibilidade é alterar o próprio CMAB, e sugiro neste caso como ponto de partida o ficheiro ConcreteFactories.cs, onde diz:


 _xmlAppConfigDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);


A sequência AppDomain.CurrentDomain.SetupInformation.ConfigurationFile  devolve-nos o nome e o path da aplicação a ser executada no momento. Por curiosidade, no caso do Biztalk 2004 (ou antes, de um componente .Net invocado pelo Bts), o valor que me foi devolvido foi:


C:\Program Files\Microsoft BizTalk Server 2004\BTSNTSvc.exe.config


(ficheiro que já existe, curiosamente)


Para mais informações, remeto para o Message Board do Workspace GotDotNet do CMAB.


jota


PS- Acabei de verificar, no Workspace acima, que a impossibilidade de configurar o CMAB no Machine.Config está até identificado como Bug, uma vez que até contraria a documentação do Application Block.

No comments:

Post a Comment