Globalcode – Open4education
Suporte a macros na sua aplicação
com PowerShell
Trilha .NET
Igor Abade V. Leite
Lambda3
Microsoft MVP – Visual Studio ALM
Professional Scrum Trainer – Scrum.org
Globalcode – Open4education
Agenda
Motivação
Tecnologias de Macro
Solução com PowerShell
Demo
Globalcode – Open4education
Motivação
Globalcode – Open4education
Motivação
Suporte a macros é legal útil
Diversos tipos de aplicações podem usar
ERP é exemplo mais óbvio
Mas vale para qualquer aplicação desktop
Permite customizar sem recompilar
Fácil de estender os recursos
Globalcode – Open4education
Tecnologias de Macro
Visual Basic for Applications (VBA)
Maduro, estável, mas caro e obsoleto
Microsoft permitia que empresas licenciassem
Exemplo: CorelDRAW! vinha com VBA
Mas não é mais comercializado
Visual Studio Tools for Applications (VSTA)
“Evolução” do VBA – substitui VB por C# e VB.NET
Usa .NET ao invés do runtime VB do VBA
Usado desde 2008 como ambiente de macros do VS
Microsoft permite que empresas licenciem
Caro. Nunca obteve tração
Globalcode – Open4education
Tecnologias de Macro
PowerShell
Não é exatamente uma tecnologia de macro, mas...
Versátil como VBA
.NET puro, com acesso a todos os seus recursos
Suporta self-hosting
Globalcode – Open4education
Solução com PowerShell
Requisitos da solução:
Embutir numa aplicação WPF
Oferecer console PowerShell para REPL
Similar à janela Immediate do VBA
IDE para edição de scripts
Como o IDE do VBA 
Interação de mão-dupla entre aplicação e PowerShell
Código PS pode acessar objetos da aplicação
Aplicação pode passar e receber estado para PowerShell
Código (delegates, scriptblocks) devem ser executáveis por
qualquer um dos dois lados
Globalcode – Open4education
Aplicação de Exemplo
WAF Writer
Aplicação de exemplo
do WAF
Feita em WPF com
MVVM
Excelente ponto de
partida
MVVM facilita
integração
Só falta integrar com
PowerShell ;-)
Globalcode – Open4education
PowerShell self-hosting
Nuget
System.Automation.Man
agement
Classe PowerShell
PowerShell.Create() cria
runtime
Método AddScript() para
passar scripts
Método Invoke() para
executar os scripts
Globalcode – Open4education
Demo
Globalcode – Open4education
GitHub!
https://github.com/igoravl/TDC2016_DotNet
Globalcode – Open4education
Obrigado!
Suporte a macros na sua aplicação com PowerShell
Trilha .NET
Igor Abade V. Leite
Lambda3
Microsoft MVP – Visual Studio ALM
Professional Scrum Trainer – Scrum.org

Suporte a macros na sua aplicação com PowerShell