Suporte a macros na sua aplicação com PowerShell

Post on 21-Feb-2017

362 views 1 download

Transcript of Suporte a macros na sua aplicação com PowerShell

Globalcode – Open4education

Suporte a macros na sua aplicação com PowerShell

Trilha .NET

Igor Abade V. LeiteLambda3

Microsoft MVP – Visual Studio ALMProfessional Scrum Trainer – Scrum.org

Globalcode – Open4education

Agenda

MotivaçãoTecnologias de MacroSolução com PowerShellDemo

Globalcode – Open4education

Motivação

Globalcode – Open4education

Motivação

Suporte a macros é legal útilDiversos tipos de aplicações podem usar

ERP é exemplo mais óbvioMas vale para qualquer aplicação desktop

Permite customizar sem recompilarFácil de estender os recursos

Globalcode – Open4education

Tecnologias de Macro

Visual Basic for Applications (VBA)Maduro, estável, mas caro e obsoletoMicrosoft permitia que empresas licenciassem

Exemplo: CorelDRAW! vinha com VBAMas não é mais comercializado

Visual Studio Tools for Applications (VSTA)“Evolução” do VBA – substitui VB por C# e VB.NETUsa .NET ao invés do runtime VB do VBAUsado desde 2008 como ambiente de macros do VSMicrosoft permite que empresas licenciem

Caro. Nunca obteve tração

Globalcode – Open4education

Tecnologias de Macro

PowerShellNão é exatamente uma tecnologia de macro, mas...

Versátil como VBA.NET puro, com acesso a todos os seus recursosSuporta self-hosting

Globalcode – Open4education

Solução com PowerShell

Requisitos da solução:Embutir numa aplicação WPFOferecer console PowerShell para REPL

Similar à janela Immediate do VBA

IDE para edição de scriptsComo o IDE do VBA

Interação de mão-dupla entre aplicação e PowerShellCódigo PS pode acessar objetos da aplicaçãoAplicação pode passar e receber estado para PowerShellCódigo (delegates, scriptblocks) devem ser executáveis por qualquer um dos dois lados

Globalcode – Open4education

Aplicação de Exemplo

WAF WriterAplicação de exemplo do WAFFeita em WPF com MVVM

Excelente ponto de partidaMVVM facilita integraçãoSó falta integrar com PowerShell ;-)

Globalcode – Open4education

PowerShell self-hosting

NugetSystem.Automation.Management

Classe PowerShellPowerShell.Create() cria runtimeMétodo AddScript() para passar scriptsMé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. LeiteLambda3

Microsoft MVP – Visual Studio ALMProfessional Scrum Trainer – Scrum.org