quarta-feira, 3 de janeiro de 2007

0

Using Dotfuscator in the post-build process

Hoje tive a necessidade de automatizar o processo de obfuscar um assembly usando o Dotfuscator. Estou utilizando neste projeto o Dotfuscator Community Edition 1.1.1019.14017, que vem com o Microsoft Visual Studio 2003.

Encontrei uma referência a isso no WWs Blog, mas que não fala nada sobre assemblies que estejam assinados com strong names (o meu caso). Pesquisando mais um pouco, achei algo no próprio site do Dotfuscator: How can I use Dotfuscator when the obfuscation process would invalidate the signing of the assembly?

Resumindo a história, marque no seu AssemblyInfo.cs:

[assembly: AssemblyDelaySign(true)]

E digite em Project Properties/Common Properties/Build Events / Post-build Event Command Line:
sn.exe -Vr $(TargetFileName)
dotfuscator.exe /q ..\..\Dotfuscator.xml
copy ..\*.dll *.dll
sn.exe -Vu $(TargetFileName)
sn.exe -R $(TargetFileName) ..\..\$(TargetName).snk

Omiti os caminhos dos executáveis para simplificar. Mas, para não esquecer:

  • "C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\sn.exe"
  • "C:\Program Files\Microsoft Visual Studio .NET 2003\PreEmptive Solutions\Dotfuscator Community Edition\dotfuscator.exe"

Assume-se que você salvou um projeto do Dotfuscator com o nome de Dotfuscator.xml no diretório da solução, que também contém o seu arquivo de chave .SNK, e que o Dotfuscator salva a DLL modificada diretamente na pasta BIN.

Mais instruções podem ser obtidas aqui: Dotfuscating Strong Named Assemblies.