C# usar objecto COM (32 bits) em sistemas 64bits

Comecei recentemente a trabalhar com um Windows 64 bits, hoje tentei abrir e executar um projeto de C# para fazer umas alterações, tudo abriu correctamente nenhum problema aparente, mesmo depois de fazer build não era gerado nenhum erro nem sequer um único Warning.

Quando tento fazer debug recebo um erro bastante estranho, numa parte do código que acede a uma DLL que serve de ponte entre a minha aplicação e outra aplicação de código fechado, esta dll é fornecida pelo fabricante (que por acaso é a Microsoft), depois de experimentar mil e um coisas e nada fazer com que o projeto corresse coloquei a versão que resultava do debug, numa máquina com XP 32bits e o projeto correu lindamente.

Depois de alguns testes a solução para o problema foi mudar a configuração da “Solution Plataform” para x86 por defeito é “Any CPU”, já agora no Visual Studio Express não aparece por defeito activa esta opção é necessário ir a Tools ““> Options ““> Projects And Solutions e marcar “Show Advanced Build Configurations “.

E é este o workaround para usar objectos COM de 32 bits em sistemas de 64 bits, referi em cima C# mas deve funcionar nas outras linguagens da .net FW.

Descompilar código .net (.net Refletor)

screenshot_full_screen

Uma das coisas que sempre me assustou no .net é a facilidade com que se consegue chegar ao código original de um executável ou libraria baseada na framework.

Existe uma serie de ferramentas que permitem de uma forma fácil, rápida e simples ver o código de uma aplicação .net.

Dessas ferramentas destaco uma que creio ser a mais popular que é o .NET Reflector da Redgate, para aceder ao código de uma aplicação basta clicar no botão browse e seleccionar a assembly que queremos ver o código e com o botão direito fazer disassemble. Claro que não incentivo ninguém a andar a esmiuçar o código de aplicações de terceiros. Eu uso frequentemente esta ferramenta para estudar o código das librarias da própia framework e ver como é que os senhores da Microsoft implementam certas funcionalidades e obter algumas luzes das melhores práticas a vários niveis na programação em “cima” da framework.