41
MVP Open Days 2015 13 e 14 de Março – São Paulo #MVPBR Dilemas de um desenvolvedor .NET na Terra do PowerShell Igor Abade V. Leite - @igorabade Microsoft MVP , Visual Studio ALM

Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Embed Size (px)

Citation preview

Page 1: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 201513 e 14 de Março – São Paulo

#MVPBR

Dilemas de um desenvolvedor.NET na Terra do PowerShellIgor Abade V. Leite - @igorabade

Microsoft MVP, Visual Studio ALM

Page 2: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Agenda

• PowerShell

• Visual Studio

• ... E mais algumas coisas entre os dois

• Mas não é só isso!

• Espero atender a Devs e ITPros

Page 3: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Motivação

Page 4: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Por que PowerShell?

•Consultoria ALM – TFS e afins•Um monte de coisas repetitivas

•Hora de criar scripts!•CMD?

• .NET?

•PowerShell!

Page 5: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Por que PowerShell?

•O que tem de pronto?•TFS Power Tools

•PsTFS: pstfs.codeplex.com

•TfDash: bitbucket.org/Sumo/tfdash

•Nada muito abrangente. Alternativa?•API TFS

Page 6: Dilemas de um Desenvolvedor .NET na Terra do PowerShell
Page 7: Dilemas de um Desenvolvedor .NET na Terra do PowerShell
Page 8: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

.NET ou PowerShell?

Page 9: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

.NET ou PowerShell?

Page 10: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Cmdlet? Function?

Elemento .NET PowerShell

Comando

(unidade básica)

Cmdlet Function

Contêiner de

distribuição

Snap-in Module

Page 11: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Repositório OSS?

Page 12: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Onde hospedar?

Page 13: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

GitHub! github.com/igoravl/tfscmdlets

Page 14: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Editor de Código

Page 15: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Qual GUI usar?

• Fácil: nenhum!

• O que eu quero é um IDE

Page 16: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

PoshTools: PowerShell Tools for Visual Studio

Page 17: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Estilo

Page 18: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Indentação

Page 19: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Begin/Process/End

Page 20: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Padrões de Nomenclatura• Verb-Noun:

• Set-Bar

• Remove-Baz

• Default Module Prefix• Verb-PrefixNoun

• Get-TfsFoo

• Set-TfsBar

Page 21: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Parameters

Page 22: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Comment Docs

Page 23: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Pipeline

Page 24: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

O que é o pipeline do PowerShell?

Page 25: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Recebendo dados via pipeline

Page 26: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Retornando dados no pipeline

• “Prints”• Write-Output

• Comando “return”

• Expressões

Page 27: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Lidando com retornos indesejados

Page 28: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Tratamento de Erros

Page 29: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Validação de parâmetros?

• Baseada em atributos• AllowNull

• AllowEmptyString

• AllowEmptyCollection

• ValidateCount

• ValidateLength

• ValidatePattern

• ValidateRange

• ValidateScript

• ValidateSet

• ValidateNotNull

• ValidateNotNullOrEmpty

Page 30: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Tratamento de Exceções

• Try / Catch / Throw

Page 31: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Confirmação de Operações Destrutivas?

• SupportsShouldProcess

• ConfirmImpact

Page 32: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Integração Contínua e Testes

Page 33: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Testes de Unidade?

Pester• github.com/pester/Pester

Nuget

• www.nuget.org/packages/Pester/

Page 34: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Integração Contínua?

AppVeyorappveyor.com

Page 35: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Análise Estática de Código?

• PowerShell Static Code Analyzer

• PSScriptAnalyzer

• “FxCop para PS”

• Novo no WMF 5.0

Page 36: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Distribuição

Page 37: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como preparar meu módulo?

• Arquivo de Definição• Módulo.PSD1

• Agrupa módulos

• Adiciona metadados

• Descreve sub-módulos

Page 38: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Onde instalar meu módulo?

• Global: $PSHome\Modules(%Windir%\System32\WindowsPowerShell\v1.0\Modules)

• Usuário: $Home\Documents\WindowsPowerShell\Modules(%UserProfile%\Documents\WindowsPowerShell\Modules)

• Vendor-specific: C:\Program Files (x86)T-Shooter

TfsCmdletsTfsCmdlets.psd1TfsCmdlets.psm1

(Company Name)

(Module Name)

(Module files)

Page 39: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como distribuir

• Online• PsGet (psget.net)

• Projeto da Comunidade

• Disponível imediatamente

• PowerShell Gallery(www.powershellgallery.com)

• Projeto da Microsoft

• “Nuget” oficial para PowerShell

• Limited Preview

• Nativo no WMF 5.0

Page 40: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como distribuir?

• Offiline• WIX

• Visual Studio Gallery

Page 41: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Q&A