Usando CopySourceAsHtml no Visual Studio 2008

12/09/2007 23:35:00 By Felipe Pessoto

Esta ferramente é muito interessante pra quem costuma inserir trechos de códigos no blog ou site.

Infelizmente o instalador dele só está preparado para o VS2005, mas você pode usá-lo no VS2008.

Para isso faça o download desse arquivo zip.

Extraia os 3 arquivos na pasta C:\Documents and Settings\<USUARIO>\Meus documentos\Visual Studio 2008\Addins
Talvez a pasta Addins não exista, então você deve cria-la.

Depois de extraidos ele já está pronto pra usar. Só para confirmar, clique em Tools -> Add-in Manager e verifique se o CopySourceAsHtml está marcado.

Agora é só selecionar o trecho desejado e clicar em Copy As Html...

E o resultado é muito bom:

 

 


   19 NumberFormatInfo NumberInfo = new NumberFormatInfo();


   20 NumberInfo.CurrencySymbol = "@";


   21 NumberInfo.CurrencyDecimalDigits = 4;


   22 DemoBuilder.NumberFormat = NumberInfo;

 

Aqui no blog não vai sair muito bem por causa do pequeno espaço horizontal, mas o html gerado fica com o visual perfeitamente igual Visual Studio.

Segunda-feira, o dia do exame

12/08/2007 13:15:00 By Felipe Pessoto

Consegui marcar um exame 70-536 pra MCTS na segunda-feita, dia 10, depois de muitos problemas em achar um cartão internacional....que era a única forma de fazer o exame em Santos.

Fiz vários simulados do Training Kit e acerto sempre mais de 70%, mas é pouco =/ vou estudar esse fim de semana pra quem sabe passar de primeira, preciso de 80%.

Ainda bem que peguei a promoção segunda chance, assim posso ver como me saio no primeiro exame e saber onde estudar mais.

Alem da segunda chance também ganhei 30% de desconto =). Foram 56 dólares pelo exame com segunda chance! A Microsoft ta facilitando bastante no quesito financeiro.

 

Se você também ta querendo fazer o exame, pode entrar no site da promoção: http://www.microsoft.com/brasil/certifique/certiseguro/ e pegar um voucher, é simples, só clicar no link correspondente ao mês que quer fazer a prova, Dezembro da direito à 30% e Janeiro à 20%.

Pra mim uma certificação MCTS vale mais que a própria faculdade, que não significa nada, pois pra ter um diploma, basta pagar a mensalidade e empurrar com a barriga, a escolha é sua se está lá pra aprender, ou pra agradar seu pai....ou quem sabe ter direito a uma cela especial heheh.

Depois posto o resultado, estou confiante, mas não tenho certeza se passo de primeira. Boa sorte pra mim.

Criando um assembly em tempo de execução

12/04/2007 10:00:00 By Felipe Pessoto

Vou explicar os passos básicos de como criar um pequeno assembly em tempo de execução, usando Reflection. Usando esses recursos seria possível criar um compilador para IL.

Os assemblies são feitos de: Assembly Metadata, Type Metadata, Code (IL) e Resources

  • O Assembly Metadata define propriedades como Nome e Versão do assembly
  • Type Metadata define todas as descrições de um tipo, como métodos, propriedades, nome de classe, etc
  • Code(IL) é o próprio código
  • Resources são imagens, strings, arquivos, etc

Cada assembly deve conter pelo menos um Modulo. Os módulos são uma espécie de caixa que guarda as informações sobre os Tipos.

Então vamos seguir a seguinte ordem, criamos um assembly, um modulo e um tipo, e já teremos o básico.

 

//namespaces necessarios
using System.Reflection;
using System.Reflection.Emit;

//Criamos um AssemblyName
AssemblyName AsyNome = new AssemblyName("MeuAssembly");
//Então definimos um novo assembly no atual AppDomain, não é possível criar um assembly a partir do próprio construtor
AssemblyBuilder AsyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(AsyNome, AssemblyBuilderAccess.RunAndSave);
//AssemblyBuilderAccess.RunAndSave quer dizer que podemos tanto executar esse assembly, quanto salva-lo

//Criamos o modulo a partir do assembly
ModuleBuilder ModBuilder = AsyBuilder.DefineDynamicModule("MeuModulo", "modulo.dll");
//E um tipo a partir do modulo. Este tipo é publico e serializável, você pode atribuir várias propriedades com o operador |
TypeBuilder TipoBuilder = ModBuilder.DefineType("Meutipo", TypeAttributes.Public | TypeAttributes.Serializable);

//Agora podemos definir os membros do tipo, como construtores, métodos, propriedades, etc
//Vamos criar um campo
FieldBuilder CampoBuilder = TipoBuilder.DefineField("Campo", typeof(int), FieldAttributes.Public);

//Podemos tambem salvar o assembly para uso posterior
AsyBuilder.Save("modulo.dll");‚Äč
 

Neste exemplo foi usado somente o FieldBuilder, mas você pode criar qualquer outro membro usando os: ConstructorBuilder para construtor, EnumBuilder para enum, EventBuilder para eventos, etc

Você pode usar esse recurso para criar um software que aceite plug-ins por exemplo.