Exercícios



Treinamento em Gest?o do Ciclo de Vida de Aplica??esPerfil: Time de Desenvolvedores, ArquitetosDesenvolvido por:280035063500a servi?o de Microsoft BrasilLaboratório 1:Introdu??o ao Source ControlVis?o geralNeste laboratório você será apresentado ao Team Foundation Server Source Control, responsável pelo versionamento do código fonte. Você aprenderá sobre seus principais conceitos e recursos como workspace, changeset, check in, history e outros.ExercíciosEste laboratório contém os seguintes exrcícios:Criando e configurando um novo workspaceAnalisando changesets e comparando vers?es222885083820060 minutos0060 minutosExercício 1: Criando e configurando um novo workspaceNeste exercício você irá aprender sobre como criar um novo workspace, mapeá-lo para sua pasta local e como encobrir (cloak) uma determinada pasta ou arquivo do Source Control. Realize o login com o usuário Christine Koch (Tester), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.Figura SEQ Figure \* ARABIC 1Abrindo o Microsoft Visual Studio 2010Como é a primeira vez que este usuário abre o Visual Studio 2010, será apresentada a tela Choose Default Environment Settings. Nesta tela o usuário tem a op??o de escolher dentre os perfis previamente definidos para configura??o de seu ambiente de trabalho. Selecione General Development Settings e clique no bot?o Start Visual Studio.Figura 2Escolha do ambiente de desenvolvimentoAbra a janela do Team Explorer utilizando o item de menu View |Team Explorer.Figura 3Menu view com op??o de abertura do Team ExplorerA janela do Team Explorer deve ser aberta do lado direito da IDE do Visual Studio 2010. Clique no bot?o Connect to Team Project.Figura 4Localiza??o do bot?o Connect to Team ProjectApós clicar no bot?o Connect to Team Project, será exibida a janela Connect to Team Project. ? com a ajuda desta janela que você se conecta a um servidor do Team Foundation Server, bem como tem acesso aos Team Project Collections e Team Projects aos quais você possui acesso.Figura 5Visualiza??o da janela Connect to Team ProjectNote que n?o existe qualquer op??o de sele??o, nem mesmo para sele??o do servidor do Team Foundation Server. Nosso próximo passo ent?o será adicionar nosso servidor do Team Foundation Server. Clique no bot?o Servers...Neste momento a janela Add/Remove Team Foundation Server é exibida, sem qualquer servidor do Team Foundation Server adicionado.Figura 6Visualiza??o da janela Add/Remove Team Foundation ServerClique no bot?o Add...Será exibida a janela Add Team Foundation Server. Preencha o campo Name or URL of Team Foundation Server com o nome do servidor “WIN-GS9GMUJITS8”, conforme tela abaixo.Figura 7Visualiaza??o da janela Add Team Foundation ServerNote que você pode especificar detalhes da conex?o com o seu servidor do Team Foundation Server, como o path, o número da porta e o protocolo utilizado. No nosso caso, vamos utilizar as op??es já disponíveis na tela. N?o altere quaisquer destas informa??es. A caixa de textos Preview nos mostra o caminho completo que será utilizado pelo Visual Studio 2010 para se conectar ao servidor do Team Foundation Server. Clique no bot?o OK para continuar.A janela Add Team Foundation Server será fechada e você retornará a janela Connect to Team Project. Note que o servidor que você acabou de cadastrar já está selecionado e as listas Team Project Collections (à esquerda) e Team Projects (à direita) possuem alguns itens.Figura 8Janela Connect to Team Project com servidor selecionadoAssegure-se que o projeto Tailspin Toys na lista Team Projects esteja marcado. Clique no bot?o Connect para se conectar a este projeto.A janela Connect to Team Project será fechada. Note que agora, a aba do Team Explorer, localizada do lado direito do Visual Studio 2010, será preenchida com os itens do projeto. Este processo pode levar alguns segundos para concluir.Neste passo o Visual Studio 2010 está se conectando a todos os servidores envolvidos no provimento do projeto Tailspin Toys, como o próprio servidor do Team Foundation Server, o servidor de SharePoint e o servidor do SQL Server Reporting Services.Após o carregamento de todos os itens, clique duas vezes sobre o nó Source Control, na janela do Team Explorer.Figura 9Localiza??o do nó Source ControlSerá aberta a aba do Source Control Explorer.Figura 10Visualiza??o da janela do Source Control ExplorerNote que esta janela é dividida em duas partes. Na parte da esquerda est?o listados os nós Folders enquanto o lado direito exibe o conteúdo do nó selecionado em Folders. Note também que os itens apresentados est?o em cinza, indicando que você ainda n?o possui uma cópia local destes arquivos.Na barra superior desta janela existe a indica??o de onde o Source Control está armazenando localmente este arquivos (Local Path). Perceba que o valor de Local Path é Not mapped, indicando que você n?o possui um workspace mapeado.A maneira mais simples de se mapear um workspace nestas condi??es é clicar no link Not mapped. Isto abrirá a janela Map que serve para realizar o mapeamento entre a pasta no servidor e a pasta na máquina local.Figura 11Janela Map para mapeamento entre pastas do servidor e da máquina localClique no bot?o contendo as reticências “...” ao lado da caixa de texto Local Folder.Será aberta a janela Browse For Folder. Esta tela é padr?o dos sistemas que executam sobre o Windows e permite a você selecionar uma pasta para o mapeamento local.Figura 12Visualiza??o da janela Browse For FolderSelecione o drive C e verifique se existe uma pasta chamada Workspaces. Caso negativo, clique no bot?o Make New Folder e crie uma pasta com este nome.Certifique-se que a pasta Workspace está selecionada e clique no bot?o OK.Você retornará para a janela Map contendo a caixa de texto Local folder preenchida com o caminho completo da pasta local que você acabou de selecionar. Clique no bot?o OK para confirmar.O Visual Studio 2010 exibirá uma caixa de alerta informando que os novos itens mapeados n?o ser?o carregados para a pasta local até que você realize uma opera??o de Get. Porém o Visual Studio 2010 lhe dá a op??o de realizar o Get imediatamente. Clique no bot?o Yes. Esta opera??o pode levar alguns segundos para completar.Figura 13Alerta do Visual Studio para Get de novo mapeamentoApós realizar a opera??o de Get, note algumas mudan?as na aba do Source Control Explorer. Primeiramente, o label LocalPath agora exibe o mapeamento local correspondente ao nó que você está visualizando. Note que este caminho é um link e, caso queira navegar rapidamente para a pasta local, basta clicar no mesmo.Note também que os itens apresentados n?o est?o com sua fonte em cinza e com a coluna Latest preenchida com Yes. Figura 14Aba do Source Code Explorer após mapeamento e GetO que você acabou de executar é a maneira mais rápida e fácil de criar e mapear um workspace quando n?o existe qualquer mapeamento. Além deste recurso, você também pode gerenciar seus workspaces e mapeamentos a partir da caixa de sele??o Workspace no topo da aba do Source Control Explorer. Abra a caixa de sele??o Workspace e selecione Workspaces...Figura 15Caixa de sele??o WorkspaceA janela Manage Workspaces será exibida. Selecione o único workspace que é exibido e clique no bot?o Edit... para editar as propriedades deste workspace.Figura 16Visualiza??o da janela Manage Workspaces? exibida a janela Edit Workspace WIN-GS9GMUJITS8. Note alguns dos campos desta tela. Nela s?o exibidos o nome do workspace, o nome do servidor com sua collection, o dono deste workspace, qual o computador local e as permiss?es de acesso.Na parte de baixo da janela existe uma tabela chamada Working folder com três colunas, sendo: Status, Source Control Folder e Local Folder.Figura 17Janela de edi??o de workspaceNote que o mapeamento que nós acabamos de criar já está mapeado na grade Working folders. Vamos adicionar mais um item nesta tabela para ocultar a pasta “$/Tailspin Toys/Releases” para que a mesma n?o seja baixada quando do processo de Get.Clique na primeira linha vazia da tabela, no campo Status e escolha a op??o Cloacked. Na coluna Source Control Folder clique no bot?o de reticências e escolha a pasta “$/Tailspin Toys/Releases”. Por fim, clique no bot?o OK.Figura 18Janela Edit Workspace após adi??o de mapeamento cloakedO Visual Studio 2010 exibirá uma caixa de alerta informando que os novos itens mapeados n?o ser?o carregados para a pasta local até que você realize uma opera??o de Get. Porém o Visual Studio 2010 lhe dá a op??o de realizar o Get imediatamente. Clique no bot?o Yes. Esta opera??o pode levar alguns segundos para completar.Note agora que a aba do Source Control Explorer foi ligeiramente alterada. Note que a pasta Releases neste momento está com a fonte cinza e que a coluna Latest possui agora a informa??o Cloaked.Exercício 2: Analisando Changesets e Comparando Vers?esNeste exercício você irá aprender como visualizar e rastrear changesets, como visualizar o histórico de um determinado arquivo e como comparar as vers?es com os recursos de View History e Annotate. No Source Control Explorer (View | Other Windows | Source Control Explorer), navegue para Tailspin Toys | Development | Iteration 2 e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o Tailspin Toys.Figura 19Abrindo a solu??o Tailspin ToysRecompile a solu??o (Build | Rebuild Solution a partir do menu principal). Este passo pode levar alguns minutos para completar.No Source Control Explorer, localize o arquivo Detail.aspx localizado abaixo do nó Tailspin.Web. Clique com o bot?o direito do mouse no arquivo Detail.aspx e selecione a op??o View History.Figura 20Visualiza??o da op??o View HistoryApós clicar em View History a aba History – Detail.aspx é exibida. Nesta tela, observe algumas informa??es como a caixa de Source location que exibe o caminho local do arquivo para o seu workspace e as abas Changesets e Labels.Figura 21Visualiza??o da aba View HistoryNa aba Changesets, note que existem dois Changesets de códigos 56 e 44. Perceba que o segundo é resultado de um branch e que ambos foram realizados pelo usuário abuobe. Note também as datas e os comentários.Nota: O número de seu changeset pode ser diferente do exibido nas figuras deste manual.Nota: O recurso de branch é analisado em detalhes em outro laboratório, posterior a este.Selecione o primeiro changeset e clique como bot?o direito do mouse. No menu de contexto que se abre, clique em Changeset Details...Figura 22Menu de contextoA janela Details for Changeset é exibida contendo todos os detalhes do changeset selecionado, incluindo os comentários, os work items vinculados, notas de check in, alertas de políticas de check in, além de uma lista completa de todos os arquivos que foram afetados por este mesmo changeset.Figura 23Visualiza??o da janela Details for ChangesetFeche a janela Details for Changeset clicando no bot?o Cancel.Ao retornar para a aba History – Detail.aspx, selecione os dois primeiros changesets com o bot?o esquerdo do mouse enquanto pressiona a tecla Ctrl.Após selecionar os dois changesets, clique com o bot?o direito do mouse e clique em Compare no menu de contexto que se abre.Figura 24Menu de contexto com a op??o CompareSerá aberta ent?o a janela de compara??o das duas vers?es do arquivo Detail.aspx. Lado a lado s?o exibidos os códigos fontes de cada vers?o.Nota: As altera??es realizadas s?o exibidas nas cores vermelhas para trechos de código excluídos, azuis para trechos de códigos alterados e verdes para trechos de códigos incluídos.Note que na linha 21 há uma diferen?a entre as vers?es referente a uma altera??o realizada entre os changesets.Figura 25Janela de compara??o de vers?es diferentes de um mesmo arquivoFeche a janela de compara??o de vers?es e retorne para a aba History – Detail.aspx.Selecione o changeset de número maior, clique com o bot?o direito do mouse e selecione a op??o Annotate a partir do menu de contexto.Figura 26Menu de contexto com a op??o AnnotateNa coluna annotation, à esquerda, posicione o mouse sobre o ultimo changeset. Note os detalhes exibidos.Figura 27Aba do annotateLaboratório 2:Branch e Merge com Team Foundation Server 2010Vis?o geralNeste laboratório você será apresentado aos recursos de branching e merging suportados pelo Team Foundation Server 2010. Os avan?os feitos no TFS 2010 tornam muito mais simples entender a hierarquia de branches e propagar mudan?as durante o processo de merge.ExercíciosEste laboratório contém os seguintes exrcícios:Trabalhando com TFS 2010 Code BranchesVisualizando branches e merges222885083820060 minutos0060 minutosExercício 1: Trabalhando com TFS 2010 Code BranchesNeste exercício você irá aprender sobre alguns dos novos recursos de branch do Team Foundation Server 2010 e como abrir uma solu??o que corresponde a um branch de código específico. Adicionalmente, este exercício servirá como uma prepara??o para um cenário onde o código em produ??o necessita ser atualizado e as mudan?as realizadas devem ser mescladas e propagadas por todos os branches ativos no sistema. Realize o login com o usuário Abu Obeida Bakhach (Dev), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.Abra a janela do Source Control Explorer utilizando o item de menu View | Other Windows | Source Control Explorer.Note que a solu??o Tailspin Toys contém o código base “Main”, bem como os branches abaixo das pastas “Development” e “Releases”. No Team Foundation Server 2010, branches s?o objetos de primeira classe e s?o representados por um ícone próprio no Source Control Explorer.Figura 28Source Code Explorer exibindo pastas e branchesClique com o bot?o direito do mouse no nó do branch Production 1.0. A partir do menu de contexto que se abre, selecione Properties. A janela Properties fornece detalhes como a vers?o e descri??o, relacionamentos hierárquicos com outros branches e permiss?es.Figura 29Janela de propriedades de um branchSelecione o bot?o Cancel para retornar ao Source Code Explorer.Selecione o nó do branch Production 1.0 na pasta Releases e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o.Realize um build completo da solu??o (Build | Rebuild Solution no menu principal). Este passo pode levar alguns minutos para completar.Assegure-se de que o projeto Tailspin.Web está configurado para ser o projeto inicial da solu??o (clique com o bot?o direito do mouse e selecione Set as StartUp Project).Pressione Ctrl+F5 para executar o website Tailspin Toys.Figura 30Página padr?o do website Tailspin ToysImagine um cenário onde o branch Production 1.0 representa o código que está atualmente rodando no servidor web de produ??o. O gerente decidu que o links n?o-funcionais que est?o no rodapé da página sejam removidos o mais rápido possível. Nós decidimos alterar diretamente o branch Production 1.0 a fim de atender rapidamente a solicita??o. Posteriormente, você verá que nós podemos propagar a mudan?a de volta para o branch da itera??o atual (Iteration 2) logo esta mudan?a se tornará parte das demais mudan?as que estamos trabalhando para o próximo release. Você verá agora como os novos recursos de branching e merging do Team Foundation Server 2010 facilitam um cenário como este. Feche a janela do Internet Explorer e retorne ao Visual Studio.Nossa primeira tarefa é atualizar o branch de produ?ao, realizando o deploy desta mudan?a no servidor web de produ??o. A partir do Solution Explorer, abra a master page Template.Master que está sob o projeto Tailspin.Web, no branch Production 2.0.Vá até o final da página Template.Master e localize uma lista de itens HTML para os links do rodapé. Comente desde o link Careers até o link Shipping Options & Charges, conforme figura abaixo.Figura 31Página Template.Master modificadaPressione Ctrl+F5 para rodar o website e verifique que os links n?o-funcionais n?o s?o mais exibidos. Para efeitos desta demonstra??o, assuma que neste ponto nós já realizamos o deploy desta atualiza??o para o servidor de produ??o.Feche a janela do Internet Explorer e retorne ao Visual Studio.Abra a janela Pending Changes em View | Other Windows | Pending Changes.No campo Comment, digite “removed non-functional links from footer”, marque a checkbox ao lado do arquivo Template.Master, e clique no bot?o Check In. Figura 32Realizando check in da mudan?a no branch Production 1.0No próximo exercício nós iremos mesclar(merge) esta mudan?a aos outros branches do sistema.Exercício 2: Visualiza??o de Branching e MergingNeste exercício você irá aprender como visualizar e rastrear changesets enquanto mescla as mudan?as realizadas no exercício anterior.No Source Control Explorer, clique com o bot?o direito do mouse no branch Production 1.0 e selecione View History a partir do menu de contexto que é exibido.Figura 33Visualiza??o do Changeset history para o branch Production 1.0Clique com o bot?o direito no changeset que você acabou de fazer o chek in e selecione Track Changeset a partir do menu de contexto que é exibido.Na janela Select Branches, o item Production 1.0 já estará selecionado. Selecione o checkbox para a Iteration 2 e ent?o clique no bot?o Visualize para vizualizar o estado atual do changeset bem como seu relacionamento com outros branches.Figura 34Selecionando branches para visualiza??oEsta visualiza??o nos mostra que o changeset em quest?o foi aplicado ao branch Production 1.0 mas n?o ao branch Iteration 2. Ela também deixa claro que para realizar o merge para a Iteration 2 nós precisamos realizar primeiramente um merge com o branch Main.Figura 35Visualiza??o do recurso Tracking Changeset no modo Hierarchy Tracking modeNota: O número de seu changeset pode ser diferente do exibido nas figuras deste manual.Para realizar um merge entre este changeset e o branch Main, clique na área verde correspondente ao nó Production 1.0, arraste e solte sobre o nó Main. Isto irá carregar o Source Control Merge Wizard.Figura 36Visualiza??o da primeira tela do Source Control Merge WizardAssegure-se que o branch de origem (source) termine com Production 1.0 e que o branch de destino (target) termine com Main. Clique no bot?o Next para continuar.A próxima tela do assistente de merge especifica a vers?o para mesclar. Por padr?o, você deve ver o changeset que você realizou check in. Clique no bot?o Finish para executar o merge.Depois que o merge estiver completo, abra a janela Pending Changes e note que o estado da página Template.Master no branch Main é agora merge, edit. O processo de merge está completo, porém nós ainda precisamos realizar o check in das altera??es.Adicione o sequinte comentário em Comment: “Merging fast-tracked changes from Production to Main”.Figura 37Inserindo o comentárioClique no bot?o Check In para concluir o merge com o branch Main.Na janela Tracking Changeset, clique no bot?o Rerun para provocar uma atualiza??o na visualiza??o. Você deverá clicar no bot?o Visualize novamente quando a janela Select Branches aparecer.Figure 38Changeset tracking view demonstrando que o merge com Main está completoAgora, realize o merge do changeset do branch Main para o branch Iteration 2 da mesma maneira que fizemos antes, arrastando e soltando, carregando assim o Source Control Merge Wizard.Clique em Next e em seguida em Finish para executar o processo de merge.Na janela Pending Changes, entre com o seguinte comentário em Comment: “Merged fast-tracked changes from Main to Iteration 2”.Clique no bot?o Check In para finalizar o merge com o branch Iteration 2.Na janela Tracking Changeset, clique no bot?o Rerun para autalizar a visualiza??o. Figura 39Rastreando o changeset original no modo Hierarchy TrackingOutra visualiza??o útil é a Timeline Tracking. Clique no bot?o Timeline Tracking a esquerda do bot?o Hierarchy Tracking para alternar a visualiza??o. Esta visualiza??o mostra a ordem no qual o changeset original foi mesclado com os outros branches.Figura 40Restreando o changeset original no modo Timeline TrackingNo Source Control Explorer, localize o arquivo Template.Master que está no branch Iteration 2. Clique com o bot?o direito e selecione Annotate no menu de contexto que é exibido.Figura 41Localiza??o da op??o AnnotateVá até o final do arquivo aberto (annotated) Template.Master e localize o HTML que você comentou previamente.Na coluna annotation, à esquerda, posicione o mouse sobre o ultimo changeset (ele deve possuir a data de hoje). Note que o caminho do changeset e seu comentário fazem referência ao branch de Production onde a mudan?a foi originalmente realizada apesar de estarmos visualizando o arquivo no branch Iteration 2.Figura 42Informa??o do changeset do arquivoTemplate.MasterLaboratório 3:Customiza??o de Workflow de BuildVis?o geralNeste laboratório você será apresentado ao workflow de processos de build e aprenderá como customizá-lo para atender a necessidades específicas do seu projeto. O exemplo utilizado será a inser??o de novas atividades no workflow para a dele??o de arquivos .pdb ao final do build.ExercíciosEste laboratório contém os seguintes exrcícios:Criando um Novo Workflow de BuildCriando uma Defini??o de Build com Workflow Customizado222885083820060 minutos0060 minutosExercício 1: Criando um Novo Workflow de BuildNeste exercício você irá aprender sobre como criar um novo workspace, mapeá-lo para sua pasta local e como encobrir (cloak) uma determinada pasta ou arquivo do Source Control.Fa?a o login com o usuário Abu Obeida Bakhach (Dev) se você ainda n?o o fez. A senha é P2ssw0rd (P maiúsculo, número dois, letra s, letra s, letra w, número zero, letra r, letra d). Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.Figura SEQ Figure \* ARABIC 2Abrindo o Microsoft Visual Studio 2010Selecione o Team Explorer que deve estar na lateral direita no Visual Studio1552575270002000Figura 44Localiza??o da aba Team ExplorerEfetue um duplo-clique no item Source Control. Uma aba com o título Source Control Explorer será aberta no Visual Studio.529590011379200011334751143000Figura 45Abrindo a aba Source Control ExplorerNo Source Control Explorer, selecione a pasta BuildProcessTemplates. Note que s?o exibidos a direita 3 arquivos .xaml que representam workflows de build. Estes arquivos s?o criados automaticamente pelo TFS quando um novo Team Project é criado.Figura 46Visualiza??o de Templates de Workflows de Build para o Team Project Tailspin ToysClique no link que aparece ao lado de Local Path. Isto nos levará a pasta do workspace local onde est?o os arquivos .xaml12858754381500Figura 47Localiza??o do link para pasta no workspace localClique no arquivo DefaultTemplate.xaml e pressione Ctrl+C, Ctrl+V para criarmos uma cópia do arquivo. Renomeie o novo arquivo DefaultTemplate.xaml - copy para CustomTemplate.xaml 2447290112395000 Figura 48Novo arquivo CustomTemplate.xaml criado a partir do DefaultTemplate.xamlAbra o bloco de notas utilizando o menu Start | All Programs |Acessories | Notepad. Copie o cole o conteúdo abaixo no notepad: @echo offcd\cd %~1del /F *.pdbecho endEste arquivo será chamado pelo processo de build customizado. Pressione Ctrl+S para salvar o arquivo. Digite o nome “c:\delete.bat” para o arquivo e clique no bot?o em Save4152265111802800170497551879500Figura 49Salvando o arquivo delete.batRetorne ao Visual Studio. Na janela do Source Control Explorer clique com o bot?o direito onde na área onde aparecem os arquivos .xaml e selecione a op??o Add Items to Folder... 2486025359854500Figura 50Localiza??o da op??o Add Items to Folder...8096251221105004371975417385500No diálogo Add to Source Control selecione o arquivo CustomTemplate.xaml e clique no bot?o Finish. Figura 51Adicionado o novo template de build no source control4371975417385500No Source Control Explorer efetue um duplo-clique no arquivo CustomTemplate.xaml para editarmos o Workflow. 70485043434000Figura 52Editando o novo workflow de buildNo editor do workflow clique no link Expand All. 527684922288500Figura 53Localiza??o do link Expand AllRole até o final do workflow para localizar a atividade Copy Files to Drop Location, dentro do grupo If DropBuild And DropLocation is Set.2000250127444500Figura 54Localizando a atividade Copy Files to Drop LocationClique no Toolbox à direita para visualizar as atividades disponíveis para o Workflow. Localize a atividade InvokeProcess e arraste-a com o mouse até a posi??o abaixo do grupo If DropBuild And DropLocation is Set.1362075184975500293370022307550064770077343000819150163639500Figura 55Inserindo uma nova atividade do tipo InvokeProcessNo rodapé do workflow clique na op??o Arguments. Será exibida a aba de configura??o de argumentos do workflow. Esta op??o permite que passemos par?metros para o processo de build através da defini??o de build. 1085850430530000Figura 56Visualiza??o da aba ArgumentsClique na linha que exibe Create Argument e preenchas as colunas conforme abaixo:- Name:BatchFileLocation - Direction:In- Argument Type:String- Default value:“c:\delete.bat”647700120015000Figura 57Criando novo argumento para o workflow Certifique-se de que a nova atividade está selecionada e pressione F4 para visualizar a janela de propriedades da atividade. Preencha as propriedades conforme abaixo (as demais propriedades n?o devem ser alteradas):- DisplayName: Delete Debug Files- Arguments: """" & "drops\" & BuildDetail.BuildDefinition.Name & "\" & BuildDetail.BuildNumber & """"- Filename:BatchFileLocation- WorkingDirectory:BuildDetail.DropLocationFigura 58Preenchimento das propriedades da atividade InvokeProcessPressione Ctrl+S para salvar as altera??es no Workflow. Na janela que solicita o salvamento do arquivo Solution1.sln clique em Cancel.Retorne ao Source Control Explorer. Clique com o bot?o direito no arquivo CustomTemplate.xaml e selecione a op??o Check In Pending Changes...2352675205930500Figura 59Subindo as altera??es no workflow para o controle de vers?oNo diálogo Check In – Source Files... clique no bot?o Check In4333875329501500Figura 60Localiza??o do bot?o Check InExercício 2: Criando uma Defini??o de Build com Workflow CustomizadoNeste exercício você irá aprender sobre como criar uma defini??o de build para utilizar o workflow customizado que criamos no exercício anterior.No Team Explorer, dentro do nó do projeto Tailspin Toys, clique com o bot?o direito em Builds e selecione a op??o New Build Definition...1266825149860000Figura 61Criando nova defini??o de buildNo campo Build Definition Name digite “Build and Drop with no Debug Files”. 179069944069000Figura 62Informando o nome da defini??o de buildClique no passo Build Defaults à esquerda e preencha o campo Copy build output to the following drop folder (UNC path, como \\server\share) com o valor “\\localhost\drops”. Este campo indica a pasta onde os arquivos resultantes do build ser?o copiados ao final do processo.733050848360001933574184658000Figura 63Informando local para cópia dos arquivos resultantes do build5999480193357500Clique no passo Process à esquerda e clique no campo Items to Build. Clique no bot?o browse (…) para selecionar os projetos a serem compilados. Figura 64Localiza??o do bot?o (...)No diálogo Items to Build clique no bot?o Add... 316230056007000Figura 65Localiza??o do bot?o Add...No diálogo Browse navegue para o arquivo Development | Iteration 2 e selecione o arquivo TailspinToys.sln. Clique em OK para prosseguir.3067050282702000321944996583500 Figura 66Sele??o do arquivo TailspinToys.slnDe volta ao diálogo Items To Build clique em OK.Ainda no passo Process da configura??o da defini??o de build, clique no bot?o Show Details para exibir o conteúdo adicional do grupo Build process template.438150089154000Figura 67Localiza??o do bot?o Show detailsClique no bot?o New... ao lado do combo Build Process file (Windows Workflow XAML). Neste passo iremos selecionar o arquivo com o workflow customizado no exercício anterior.430530067056000Figura 68Localiza??o do bot?o New...No diálogo New Build Process Template selecione a op??o Select an existing XAML file e clique no bot?o Browse... 3219450276845500781050236220000 Figura 69Localiza??o do bot?o Browse...No diálogo Browse certifique-se de que o arquivo CustomTemplate.xaml está selecionado e clique no bot?o OK.302895028047950078105057912000 Figura 70Selecionando o arquivo CustomTemplate.xamlDe volta ao diálogo New Build Process Template clique em OK.Note que o argumento BatchFileLocation que criamos está disponível para edi??o através da defini??o de build na se??o Misc. 800100190119000Figura 71Edi??o de argumentos customizados para o workflow de buildClique no bot?o Save para salvar a defini??o de build.138112529718000Figura 72Localiza??o do bot?o SaveAgora que temos a defini??o de build configurada com o nosso workflow customizado vamos disparar o build. No Team Explorer clique com o bot?o direito na defini??o de build Build and Drop with no Debug Files e selecione a op??o Queue New Build...2276475145923000Figura 73Localiza??o da op??o Queue New Build...No diálogo Queue Build “Tailspin Toys” clique no bot?o Queue. Aguarde a conclus?o do build.2895600423862500 Figura 74Localiza??o da op??o Queue New Build...Após a conclus?o do build, clique com o bot?o direito na linha que mostra o resultado do build e selecione o item Open Drop Folder.3248024183832500 Figura 75Localiza??o da op??o Open Drop FolderVerifique na pasta que os arquivos .pdb foram deletados com sucesso.Figura 76Pasta onde o build foi gerado demonstrando a dele??o dos arquivos .pdbLaboratório 4:Depurando código com IntelliTraceVis?o geralNeste laboratório você irá conhecer o novo recurso de depura??o do Visual Studio 2010 Ultimate, o IntelliTrace. Antes do advento do IntelliTrace, a depura??o acontecia a partir de um determinado ponto no tempo. Se você quisesse mais informa??es sobre as chamadas anteriores, você deveria configurar um novo breakpoint e executar novamente a aplica??o. Agora, o IntelliTrace permite a você buscar por um grande número de pontos de execu??o, que ocorreram no passado, e aprofundar em qualquer um deles, comparando variáveis, pilhas de chamadas, etc. ajudando assim a identificar a causa de um problema sem a necessidade de reproduzi-lo.ExercíciosEste laboratório contém os seguintes exercícios:Introdu??o ao IntelliTraceUtilizando IntelliTrace com Call Information226885576200060 minutos400002000060 minutosExercício 1: Introdu??o ao IntelliTraceNeste exercício você irá aprender como as configura??es padr?o do IntelliTrace podem ajuda-lo a depurar uma falha em um dado XML de um website .Aplica??es suportadas e cenários de depura??o:IntelliTrace suporta depura??o em aplica??es Visual Basic e C# que utilizem as vers?es do framework .Net 2.0, 3.0, 3.5 ou 4 (, Windows Forms, WPF, Windows Workflow, and WCF). IntelliTrace n?o suporta depura??o de C++, script, ou linguagens n?o gerenciadas. Para mais informa??es sobre o IntelliTrace, acesse a documenta??o do Visual Studio 2010 na Microsoft Developer Network ().Realize o login com o usuário Abu Obeida Bakhach (Dev), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.No Source Control Explorer (View | Other Windows | Source Control Explorer), navega para Tailspin Toys | Development | Iteration 2 e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o Tailspin Toys.Recompile a solu??o (Build | Rebuild Solution a partir do menu principal). Este passo pode levar alguns minutos para completar.Abra a janela Options a partir de Tools | Options... e clique no nó IntelliTrace. Certifique que o checkbox Enable IntelliTrace está selecionado e que está configurado para “IntelliTrace events only”. Este é a configura??o padr?o uma vez que é a que implica em menor impacto em desempenho.Figura 77Op??es do IntelliTraceNota: O IntelliTrace grava os seus eventos em um arquivo com a exten??o .iTrace. Estes arquivos podem ser salvos e usados posteriormente para executar uma depura??o com o IntelliTrace, permitindo aos testadores anexar esta informa??o detalhada de depura??o diretamente aos relatórios de bugs.Inicie uma sess?o de depura??o pressionando F5. Esta a??o irá carregar a página inicial da companhia fictícia Tailspin Toys.Nota: Caso o projeto Tailspin.Web n?o esteja configurado como projeto de inicializa??o, clique com o bot?o direito no nó Tailspin.Web na caixa do Solution Explorer e selecione a op??o Set as StartUp Project.Figura 78Página inicial da Tailspin Toys Clique no link About Us no rodapé da página. Isto irá gerar uma exce??o e exibir uma página de erro customizada para a aplica??o Tailspin.Figura 79Página de erro exibida quando corregando About UsVolte ao Visual Studio e selecione Debug | Break All para que possamos iniciar o processo de depura??o. Caso a janela do IntelliTrace n?o esteja visível, abra-a selecionando Debug | Windows | IntelliTrace Events a partir do menu principal. A janela do IntelliTrace Events exibe uma lista sequencial de eventos que foram coletados desde que você iniciou a sess?o de depura??o, com mais recente ao final.Figura 80Janela do IntelliTrace exibindo os eventos registradosNota: O IntelliTrace é configurado por padr?o para coletar certos eventos quando depurando, alguns dos quais você pode ver agora na janela IntelliTrace Events. Você pode configurar quais categorias ou mesmo eventos específicos que s?o coletados a partir do IntelliTrace Options (Tools | Options).Na janela IntelliTrace Events, localize e selecione o evento “Exception Thrown” que ocorre depois que a página “/Views/Home/About” for carregada. Ser?o exibidos detalhes sobre a exce??o ocorrida, bem como links para as janelas Locals e Call Stack. Esta exce??o nos mostra que existe um problema com o arquivo XML na linha 10, coluna 49, mas n?o nos diz a qual arquivo XML ele se refere.Figura 81Exce??o lan?ada quando processando o arquivo XMLFigura 82Estado das janelas Locals e Call Stack durante a exce??o selecionadaSelecione o evento XML Loading imediatamente antes da exce??o para visualizar qual arquivo foi acessado logo antes que a exce??o ocorreu.Figura 83Evento de carregamento do XMLAbra o arquivo Ads.xml clicando no link disponibilizado e navegue para Tailspin.Web\Content\XML\Ads.xml. Ent?o clique no bot?o Open.Nota: Você precisará navegar para a pasta da Iteration 2 em c:\ws\abuobe\Tailspin Toys\Development\Iteration 2.Observar que existe uma linha vermelhar sublinhando os caracteres “&b=1” que s?o inválidos neste contexto. Note que o erros está localizado extamente na linha 10, coluna 49, conforme relatado pela exce??o XML.Figura 84Arquivo Ads.xml exibindo caracteres inválidosRemova os caracteres inválidos e salve o arquivo. A URL final deve ser : Quando solicitado pela janela Edit and Continue, clique no bot?o Edit.Pressione F5 duas vezes para continuar executando a aplica??o.Volte para o Internet Explorer e clique no link About Us novamente para verificar que o problema foi resolvido. O rodapé da página About exibe um dos anúncios especificados no arquivo Ads.xml.Figure 85Página About com os anúncios funcionandoPare a sess?o de depura??o atual (Debug | Stop Debugging).Exercício 2: Usando IntelliTrace com Call InformationNeste exercício, você irá aprender como usar o IntelliTrace para coletar informa??es adicionais de chamada a fim de resolver um erro de usuário mais complicado.Por padr?o, apenas os eventos do IntelliTrace s?o coletados quando depurando, mas nós podemos também, opcionalmente, coletar dados de cada entrada/saída de método e chamada de site. Para ativar esta op??o, selecione Tools | Options a partir do menu principal do Visual Studio, localize o nó IntelliTrace, e selecione a op??o IntelliTrace events and call information.Figura 86Op??es do IntelliTrace ajustadas para gravar informa??es de chamadaClique no bot?o OK para continuar.Inicie uma sess?o de depura??o pressionando F5.Vamos testar a funcionalidade de carrinho de compras adicionando alguns dos produtos ao carrinho. No cabe?alho da página, selecione Paper Airplanes para ver o catálogo de aeromodelos.Figura 87Catálogo de avi?esA seguir, clique no bot?o View Plane do modelo Contoso Cloud Explorer.Figura 88Página do produto Contoso Cloud ExplorerClique no bot?o Add To Cart e verifique que a quantidade de itens no carrinho é 1.Figura 88Carrinho de compras exibindo 1 aeromodeloAdicione outro Cotoso Cloud Explorer ao carrinho de compras clicando no link Contoso Cloud Explorer e clicando a seguir no bot?o Add To Cart mais uma vez. Note que a quantidade continua em 1, onde na verdade deveria ser 2 pois adicionamos 2 produtos.Volte ao Visual Studio e selecione Debug | Break All. Por padr?o, nós vemos a janela do IntelliTrace Events exibindo a sequencia de eventos gravados que antecederam a parada da depura??o. Neste caso, todavia, os eventos n?o ser?o muito úteis na depura??o da lógica do carrinho de compras da Tailspin Toys uma vez que o seu código n?o é parte do .NET framework.Na caixa de busca (search box), localiza no topo da janela do IntelliTrace, digite “post” e pressione Enter para executar a busca. Ser?o retornados dois eventos Post, um para cada item adicionado ao carrinho de compras.Selecione o segundo evento “Post /Cart/AddItem/”. Nós iremos usar este evento como ponto de referencia para ajudar na navega??o para o ponto na sess?o de depura??o onde a lógica de adi??o do item inicia.Figura 89Segundo evento post selecionadoRetorne à lista completa dos eventos gravados, clicando no “X” azul da caixa de busca.Clique no link Calls View no rodapé do evento selecionado para exibir a hierarquia completa das chamadas da sess?o de depura??o. A visualiza??o das chamadas exibe a pilha para o a chamada selecionada.Nota: Você também pode usar o bot?o Show Calls View no topo da janela do IntelliTrace.Figura 90Localiza??o do link Calls ViewFigura 91Visualiza??o da IntelliTrace calls viewNa janela IntelliTrace calls view, clique duas vezes na chamada “Tailspin.Web.App.Controllers.CartController.AddItem(string sku = “papcce”)”. Cada vez que você clica duas vezes em uma chamada, esta chamada é colocada no final do frame do topo e o ponteiro do código é sincronizado com o editor para a entrada do método assim como acontece quando você está navegando na pilha de chamadas de um debug comum.Novamente, no IntelliTrace calls view, clique duas vezes na chamada “Tailspin.Model.ShoppingCart.AddItem(Tailspin.Model.Product produt = {Tailspin.Model.Product})”.Mais uma vez, no IntelliTrace calls view, clique duas vezes na chamada AddItem que exibe “Tailspin.Model.Product product = {Tailspin.Model.Product}, int quantity = 1)” como par?metro.No IntelliTrace calls view, clique duas vezes na chamada AddItem que exibe “Tailspin.Model.Product product = {Tailspin.Model.Product}, int quantity = 1, System.DateTime dateAdded = …)” como par?metro. Navegar pela calls view é um modo rápido de obter uma vis?o geral sobre a hierarquia de chamadas e realizar saltos através desta hierarquia sem ter que navegar linha a linha, como no debug comum.Figura 92IntelliTrace calls view exibindo a chamada ao método AddItemNa janela Locals, expanda a chamada a fun??o AddItem para validar se o produto foi corretamente adicionado ao carrinho de compras e a quantidade adicionada é 1. Em qualquer ponto do IntelliTrace você pode olhar para as variáveis coletadas nas janelas Autos/Locals/Watch ou usando datatips no editor de código.Figura 93Janela Locals exibindo par?metros durante a chamada ao AddItemCaminhe dois passos para frente pressionando F10 duas vezes. Mantenha em mente que uma vez que nós estamos no modo de depura??o do IntelliTrace, nós vamos caminhar através dos eventos gravados e n?o linha a linha pelo código.Figura 94Localiza??o no método AddItem onde AdjustQuantity é chamadoNota: Você pode também usar o novo conjunto de controles no estilo VCR que s?o exibidos a esquerda da janela do editor de códigos.Na janela Locals, expanda a chamada a fun??o AdjustQuantity para ver qual quantidade o carrinho de compras está configurado depois que o segundo produto é adicionado. Uma vez que nós esperamos que ele esteja com a quantidade 2, nós encontramos o local do bug.Pare a sess?o atual de depura??o (Debug | Stop Debugging).Mude a chamada a AdjustQuantity para que ela adicione a nova quantidade passada para o método AddItem.Figura 95Corrigindo a chamada ao método AdjustQuantityVerifique a corre??o adicionando um mesmo produto duas vezes ao carrinho de compras para assegurar que a quantidade exibida é 2. Figura 96Carrinho de compras exibindo a quantidade correta de itensNota: Você pode limpar o carrinho de compras manualmente removendo os itens ou selecionando Safety | Delete Browsing History a partir do menu principal do Internet Explorer.Laboratório 5:Utilizando Code Analysis para Melhoria da Qualidade de CódigoVis?o geralO recurso do Visual Studio Code Analysis executa uma análise estática do código a fim de ajudar os desenvolvedores a identificar problemas potenciais de design, globaliza??o, interoperabilidade, performance, seguran?a e várias outras categorias. No Visual Studio 2010, foram feitos aprimoramentos no mecanismo do Code Analysis, bem como a habilidade de configurar conjunto de regras ao invés de selecionar a partir de uma lista plana de regras. O Code Analysis pode ser executado manualmente a qualquer momento de dentro da IDE do Visual Studio, ou mesmo configurada para executar automaticamente como parte de um Team Build ou uma política de check-in do TFS.Neste laboratório você será introduzido ao Code Analysis, como configurar um conjunto de regras para uso e, finalmente, como suprimir regras específicas para um projeto ou nível de código fonte.Nota: O Code Analysis pode ser encontrado nas edi??es Premium e Ultimate do Visual Studio 2010.424751526670000ExercíciosEste laboratório contém os seguintes exercícios:Introdu??o ao Code AnalysisSuprimindo alertas do Code Analysis42005252159060 minutos02000060 minutosExercício 1: Introdu??o ao Code AnalysisNeste exercício você irá aprender sobre os novos recursos do Code Analysis do Visual Studio 2010 configurando um conjunto de regras, executando uma análise de código em um projeto de exemplo e entender alguns dos alertas que s?o disparados.Realize o login com o usuário Abu Obeida Bakhach (Dev), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.No Source Control Explorer (View | Other Windows | Source Control Explorer), navega para Tailspin Toys | Development | Iteration 2 e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o Tailspin Toys.Recompile a solu??o (Build | Rebuild Solution a partir do menu principal). Este passo pode levar alguns minutos para completar.No Solution Explorer, clique com o bot?o esquerdo do mouse no nó do projeto Tailspin.Model e selecione Analyze | Configure Code Analysis for Tailspin.Model a partir do menu principal, o qual irá carregar o as propriedades do projeto e exibirá a aba do Code Analysis.Figura 97Configurando o Code Analysis para um projetoNota: A aba do Code Analysis é nova no Visual Studio 2010, e ela permite a você escolher quais os conjuntos de regras a partir de uma lista plana de regras, assim como nas vers?es anteriores.Selecione a op??o Microsoft All Rules no combo Rule Set.Figura 3Configurando o Code Analysis para o uso de um conjunto de regrasNo Solution Explorer, clique com o bot?o direito no nó do projeto Tailspin.Model e selecione Run Code Analysis a partir do menu de contexto que aparece.Figura 98Localiza??o do comando Run Code Analysis a partir do menu de contextoO recurso Code Analysis roda sobre o código estático com as regras definidas pela Microsoft e exibe os resultados como alertas. Navegue na lista de alertas e leia alguns deles.Figura 99Visualiza??o dos alertas do Code Analysis Nota: Dependendo da vers?o do Tailspin Toys que você estiver executando, você deverá ver mais ou menos alertas.Nota: As regras do Code Analysis também podem ser configuradas para exibir como erros, caso desejado.Os alertas produzidos pelo Code Analysis fornecem uma riqueza de informa??es incluindo um código único de catedoria (como CA1062 na tela acima), um nome de grupo (Microsoft.Design na tela acima), e uma breve descri??o do problema ou uma sugest?o de solu??o, além da localiza??o do arquivo ao qual se refere o código.Nota: Pressionando F1 enquanto selecionando um dos alertas irá levar você a uma ajuda online mais descritiva. Isto pode n?o ser possível se você estiver dentro do ambiente virtual.Encontre um alerta que pare?a ser fácil e rápido de resolver, como o alerta para CA1062 da tela acima, e clique duas vezes nele para carregar o código.Figura 100Erros do Code Analysis vinculados ao código fonteExecute o reparo necessário para solucionar o alerta. Para CA1062, nos foi dito que deveríamos validar o par?metro ‘item’ antes de usá-lo. Uma sugest?o de reparo seria o da tela a seguir:Figura 101Validando um par?metro de entrada para solucionar o CA1062Selecione Analyze | Run Code Analysis on Tailspin.Model a partir do menu principal e verifique que o alerta desapareceu.Exercício 2: Suprimindo Alertas do Code AnalysisNeste exercício, você irá aprender como suprimir alertas do Code Analysis no nível de projeto ou de código fonte.Na janela Error List, selecione os três primeiros alertas que s?o exibidos no projeto associado. Note que eles n?o est?o associados a um arquivo (olhe a coluna File). Imagine que nós n?o queremos ser notificados quando o Code Analysis executa.Clique com o bot?o direito do mouse nos alertas selecionados e escolha Supress Message(s) | In Project Suppression File a partir do menu de contexto que aparece. Isto irá adicionar ao metadata do assembly no arquivo GlobalSuppressions.cs.Figura 102Suprimindo regras específicas do Code Analysis no nível de projetoAbra o arquivo GlobalSuppressions.cs para visualizar o código adicionado.Figura 103Regras suprimidas pelo arquivo GlobalSuppressions.cs Dê uma olhada no próximo alerta do Code Analysis que é listado, CA1726, que sugere a mudan?a no nome do tipo Cancelled que deve ser renomeado para Canceled. Clique duas vezes neste alerta para ir ao código fonte e reparar.Clique com o bot?o direito no nome da classe Cancelled e selecione Refactor | Rename… a partir do menu de contexto que aparece.Figura 104Renomeando uma classe para corrigir a grafiaNa janela Rename, mude Cancelled para Canceled e clique no bot?o OK para continuar.Na janela Preview Changes – Rename, revise as mudan?as propostas e clique no bot?o Apply para completar o processo de refactoring.Selecione o próximo alerta do Code Analysis. Imagine que nós queiramos suprimir esta regra em específico, mas desta vez nós apenas gostaríamos de aplicar a um código fonte em específico. Clique com o bot?o direito do mouse no alerta e selecione Suppress Message(s) | In Source a partir do menu de contexto que aparece. Isto aplica um atributo SuppressMessage para o delegate para o qual o Code Analysis foi identificado.Figura 105Suprimindo uma regra do Code AnalysisSelecione Analyze | Run Code Analysis on Tailspin.Model a partir do menu principal e verifique que mais alertas foram apresentados.Neste ponto, existem alertas adicionais do Code Analysis que nós podemos averiguar, mas imagine que nós simplesmente queiramos ignorar o restante dos itens por agora. Retorne a sess?o Code Analysis das propriedades do projeto e selecione a op??o Microsoft Minimum Recommended Rules.Selecione Analyze | Run Code Analysis on Tailspin.Model a partir do menu principal e verifique que o número de alertas foi dramaticamente reduzido. Os alertas que aparecem como resultado do uso deste conjunto de regras s?o em sua maioria problemáticos em tempo de execu??o.Laboratório 6:Code Discovery utilizando Architecture ToolsVis?o geralNeste laboratório você irá aprender como gerar e navegar pelos gráficos de dependência do Visual Studio 2010 Ultimate a fim de obter um melhor entendimento e melhorar a comunica??o sobre a arquitetura do sistema.ExercíciosEste laboratório contém os seguintes exercícios:Gera??o e navega??o pelo gráfico de dependênciasTrabalhando com Graph Nodes e Grouping226885576200060 minutos400002000060 minutosExercício 1: Gera??o e navega??o pelo gráfico de dependênciasNeste exercício você irá aprender como gerar um gráfico de dependência que exibe os relacionamentos entre os tipos do assembly da aplica??o (como as chamadas, heran?as, retornos e mais), tipos genéricos gerados e tipos de assemby externos. Você também tomará contato com a navega??o pelos relacionamentos e recursos de zoom.Realize o login com o usuário Abu Obeida Bakhach (Dev), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.No Source Control Explorer (View | Other Windows | Source Control Explorer), navegue para Tailspin Toys | Development | Iteration 2 e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o Tailspin Toys.Recompile a solu??o (Build | Rebuild Solution a partir do menu principal). Este passo pode levar alguns minutos para completar.A partir do menu principal, navegue para Architecture | Generate Dependency Graph para exibir as op??es disponíveis (By Assembly, By Namespace, By Class, Custom e outras).Figura 106Visualiza??o das op??es do Dependency GraphSelecione Custom… e observe os vários níveis de detalhamento que podem ser incluídos no gráfico de dependências gerado. Note que uma pré-visualiza??o é gerada exibindo a estrutura geral da op??o selecionada atualmente.Figura 107Incluindo assemblies para o gráfico de dependênciasFigure 108Incluindo assemblies,namespaces, types, e methods ao gráfico de dependênciasNota: Também é possível incluir/excluir tipos e métodos pelo modificador de acesso (public, protected, private). Clique na seta abaixo próxima ao cabe?alho do Access Filter caso você queira ver estas op??es.Clique no bot?o Cancel para fechar a janela Generate Dependency Graph.Gere o gráfico de dependências por assembly (Architecture | Generate Dependency Graph | By Assembly).Figura 109Gerando o gráfico de dependências por assemblyO resultado da gera??o é um document DGML (Directed Graph Markup Language) que você pode editar usando o Visual Studio 2010 ou outras ferramentas. Observer a janela Output para ter uma ideia dos passos executados para gerar o gráfico de dependências.Figura 110Saída do processo de gera??o do gráfico de dependênciasFeche a janela Output para ganhar mais espa?o na exibi??o do gráfico de dependências. O gráfico está atualmente no estado completamente recolhido, logo você pode ver todos os assemblies de uma só vez. As linhas cinza, de espessuras variadas, representam a magnitude da interdependência do relacionamento entre os assemblies, sendo que as linhas mais grossas indicam maiores relacionamentos.Figura 111Gráfico de dependências gerado exibindo os assemblies de saída e suas dependênciasNota: Em adi??o aos assemblies de saída, grupos chamados Externals e Generics s?o criados. O grupo Externals inclui todos os assemblies referenciados externamente enquanto o grupo Generics inclui os tipos genéricos gerados.Expanda o grupo Generics clicando na seta dupla para baixo.Figura 112Localiza??o da seta duplaUtilize a caixa de zoom da barra Directed Graph para ajustar o zoom em 100%. Isto nos permitirá ver mais detalhes dos tipos genéricos.Figura 113Localiza??o da caixa de zoomNota: O processo de zoom também pode ser feito com + e – dos ícones de lupa próximos a caixa de zoom, ou também usando Ctrl + bot?o de rolagem do mouse.Clique com o bot?o direito do mouse na caixa ICollection<Image> para exibir as linhas de relacionamento (em azul). Expanda o nó ICollection<Image>.Figura 114Expandindo o nóA seguir, passe o cursor do mouse sobre as linhas de relacionamento até encontrar uma com o Target Node do tipo Image.Figura 115Linha de relacionamento exibindo que o nó alvo é to tipo ImageNota: O gráfico de dependências gerado que você vê pode ser diferente dos screenshots exibidos neste manual de laboratório. Você pode precisar utilizar mais ou menos zoom, rolagem procurando visualmente pelos objetos especificados em cada passo deste laboratório.Clique na seta para navegar para o nó de destino (Image).Nota: O controle de navega??o que aparece quando você posiciona ou ponteiro do mouse sobre uma linha de relacionamento azul exibe três a??es. As duas setas navegam cada uma para a origem ou para o destino do relacionamento (dependendo do contexto). O bot?o + ajuda a gerar um novo gráfico contendo apenas os nós de origem e destino.Depois que o gráfico é reconstruido e exibido, a classe Image será exibida com todas as suas linhas de relacionamento.Figura 116Zoom na classe ImageNa caixa de zoom, selecione Zoom to fit para que todo o gráfico de dependência seja exibido na mesma tela.Figura 117Relacionamento entre a classe Image que está no namespace Tailspin Model (veja o círculo vermelho na parte de baixo) e a interface genérica ICollection<Image> (ao topo circulada em vermelho)Volte para a visualiza??o recolhida (original) do gráfico de dependências clicando com o bot?o direito do mouse e selecionando Group | Collapse All.Figura 118Menu de contexto exibindo a op??o Collapse AllExpanda o nó Externals a partir do gráfico de dependências e exponha os assemblies externos usados pela aplica??o Tailspin.Realize um zoom e expanda o nó System.Web.dll dentro do grupo Externals a fim de visualizar todos os namespaces usados pela aplica??o Tailspin.Figura 119Visualiza??o do nó System.Web.dll apara o gráfico de dependênciasEncontre expanda o nó System.Web.Rounting para visualizar os tipos contidos neste.Figura 120Nó System.Web.Routing expandidoSelecione a classe Route Table para exibir suas linhas de relacionamento.Encontre a linha de relacionamento que tenha como origem o nó Application_Start e como destino o nó get_Routes. Use o controle de navega??o para navegar para o nó de origem Application_Start. Esta a??o irá expandir a Tailspin.Web.dll e selecionar nó da classe MvcApplication.Figura 121Localiza??o do bot?o de navega??o que liga ao Application_StartNota: As linhas de relacionamento, algumas vezes, s?o exibidas umas sobre as outras, tornando a sele??o de uma linha em específico. Para contornar isto, amplie o zoom até que as linhas fiquem distantes umas das outras ou use os bot?es gráficos de layout ao lado da caixa de zoom na caixa de ferramentas Directed Graph.Navegar para o nó Application_Start leva você para uma visualiza??o aprofundada do assembly Tailspin.Web.dll pela expans?o do namespace Tailspin.Web, da classe MvcApplication e, finalmente, do método Application_Start.Figura 122Resultado da navega??o para o nó Application_StartRetorne a visualiza??o original do gráfico de dependências clicando com o bot?o direito do mouse e selecionando Group | Collapse All.Na caixa de zoom, selecione Zoom to fit para exibir todo o gráfico de dependências.Expanda o nó Externals do gráfico de dependências para exibir os assemblies externos utilizados pela aplica??o Tailspin.Aumente o zoom e expanda o nó System.Web.dll dentro do grupo Externals, assim você poderá ver todos os tipos contidos nos namespaces usados pela aplica??o Tailspin.Expanda o nó do namespace System.Web.UI para ver todos os tipos usados pela aplica??o Tailspin.Figura 123Tipos do namespace System.Web.UI usados pela aplica??o TailspinExpanda a classe Page para ver todos os métodos usados pela aplica??o Tailspin.Figura 124Métodos da classe Page usados pela aplica??o TailspinSelecione o nó get_Request na classe Page e localize a linha de relacionamento com o nó de origem Page_Load. Esta linha de relacionamento nos mostra exatamente como nós estamos usando a classe externa Page a partir da aplica??o Tailspin.Exercício 2: Trabalhando com Graph Nodes e GroupingNeste exercício você irá aprender como reduzir a complexidade do gráfico de dependências removendo nós desnecessários, ajustando os nós em grupos e modificando as propriedades dos nós no gráfico. Retorne a visualiza??o original do gráfico de dependências clicando com o bot?o direito do mouse e selecionando Group | Collapse All.Na caixa de zoom clique em Zoom to fit.Expando o nó Externals a partir do gráfico de dependências para exibir os assemblies externos usados pela aplica??o Tailspin. Selecione o nó do assembly mscorlib.dll e pressione a tela Delete para remove-lo do gráfico. A lógica por traz da remo??o deste nó, assim como de outros assemblies e tipos externos, é que estes causam muita polui??o no gráfico, tornando a navega??o pelo gráfico difícil.Figura 125Localiza??o da mscorlib.dllNota: Muitos nós com o nome mscorlib.dll existem porque a aplica??o faz referência a duas vers?es diferentes deste assembly.Apague os dois nós System.dll a partir do grupo Externals.Nota: A linha de relacionamento cinza conectando o grupo Externals termina na fronteira do grupo. O propósito disto é reduzir a complexidade visual do gráfico de dependências. Se você remover o grupo Externals, você estará apto a ver todos os relacionamentos diretos entre os assemblies externos e internos, bem como mais detalhes entre os assemblies atualmente agrupados dentro de Externals.Selecione o grupo Externals, clique com o bot?o direito em Group | Remove Group. Isto irá remover o agrupamento mas n?o os nós contidos nele.Figura 126Removendo o grupo ExternalsUtilizando a caixa de zoom, selecione Zoom to fit.Apague o nó Tailspin.Test.Model.dll do gráfico. Nós devemos remover este nó para ter uma ideia melhor sobre como a aplica??o desenvolvida trabalha.Figura 127Gráfico de dependências de assemblies simplificadoApesar da remo??o do grupo Externals nos ter dado uma melhor ideia sobre o que está acontecendo, isto torna difícil distinguir entre os assemblies da aplica??o e aqueles que nós previamente agrupamos como Externals. Isto pode ser contornado adicionando uma propriedade ao nó dando aos assemblies externos uma cor diferente. Clique em Add no painel Legend exibido no canto superior direito do gráfico e selecione Node Property | IsExternal.Figura 128Criando uma propriedade de nó que pronta para IsExternalA propriedade IsExternal do nó é adicionada ao painel de legenda. Localize o combo do IsExternal e selecione a op??o Background... para carregar a janela de sele??o de cores (Color Set Picker).Figura 129Mudando a cor de fundo de nós dependendo do estado da propriedade IsExternalNa janela Color Set Picker, selecione True e a cor vermelha (), ou qualquer outra cor que você prefira, desde que n?o seja a azul.Clique no bot?o OK para confirmar sua sele??o.Figura 130Gráfico de dependências exibindo os assemblies externos na cor vermelhaLaboratório 7:Entendendo Acoplamento de ClassesVis?o geralEntender o relacionamento entre classes em um código de um projeto pode ser uma tarefa difícil. Neste laboratório você irá aprender a usar os novos diagramas DGML do Visual Studio 2010 Ultimate para aprofundar em uma base de código existente e perceber como os tipos est?o relacionados.ExercíciosEste laboratório contém os seguintes exercícios:Introdu??o ao Gráfico de Dependências de ClassesDescobrindo Referencias CircularesPré-requisitos? recomendado que você completasse o laboratório “Lab 6 - Code Discovery utilizando Architecture Tools” antes de explorar este laboratório.226885576200060 minutos400002000060 minutosExercício 1: Introdu??o ao Gráfico de Dependência de ClassesNeste exercício você irá aprender a gerar e navegar pelo gráfico de dependência de classes.Realize o login com o usuário Abu Obeida Bakhach (Dev), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.No Source Control Explorer (View | Other Windows | Source Control Explorer), navegue para Tailspin Toys | Development | Iteration 2 e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o Tailspin Toys.Recompile a solu??o (Build | Rebuild Solution a partir do menu principal). Este passo pode levar alguns minutos para completar.Feche a janela Output depois que o processo de compila??o estiver completo.Crie um novo gráfico de dependência de classes (Architecture | Generate Dependency Graph | By Class). O gráfico gerado é armazenado no formato Directed Graph Markup Language (chamado acima de DGML), que permite a você trabalher com ele visualmente com o Visual Studio 2010 e outras ferramentas.Nota: Gerar o gráfico de dependência de classes para todos os projetos de uma solu??o pode levar alguns minutos para completar.Selecione o bot?o Quick Clusters a partir da barra de ferramentas Directed Graph para visualizer todas as classes e seus relacionamentos e uma só vez.Figura 131Loaliza??o do bot?o Quick ClustersFigura 132Visualiza??o com o Quick Clusters do gráfico de dependência de classes geradoNota: A visualiza??o do gráfico de dependências gerado pode ser diferente das screeenshots exibidas neste manual. Você deve precisar executar a??o adicionais de zoom, rolagem e, visualmente procurar pelos objetos especificados nos passos deste laboratório.A visualiza??o Quick Clusters do gráfico de dependências apenas nos dá uma ideia do número de classes no projeto TailspinToys e seu grau de dependência entre cada uma das classes. Esta visualiza??o tem uma utilidade limitada para nós, portanto aumente o zoom em dire??o ao centro do gráfico pressionando a tecla Ctrl e usando o bot?o de rolagem do mouse até que você possa ver claramente a classe Product.Nota: O zoom também pode ser realizado pela caixa de zoom localizada na barra de ferramenteas Directed Graph ou ainda pelo uso das lupas contendo os simbolos de + e -, próximas a caixa de zoom. Figura 133Vis?o do gráfico de dependência de classes mostrando a classe ProductNota: A espessura das linhas cinzas representam a magnitude da interdependência do relacionamento entre as classes, com as linhas mais grossas representando mais relacionamentos.Selecione a classe Product clicando com o bot?o esquerdo do mouse para destacar apenas os relacionamentos diretos (cor roxa) entre a classe Product e outras classes representadas no gráfico.Figura 134Classe Product selecionada, exibindo as linhas de relacionamento diretosSelecionar o nó da classe Product a partir do gráfico, nos ajuda a destacar os relacionamentos diretos entre as outras classes, mas ainda é difícil distinguir entre as dependências dos relacionamentos de entrada e saída. Para que possamos visualizar esta distin??o, mude o leiaute do gráfico selecionando o bot?o Top to Bottom a partir da barra de ferramentas Directed Graph.Figura 135Localiza??o do bot?o Top to BottomFigura 136Resultado do leiaute Top to Bottom Este leiaute nos exibe as linhas de relacionamento de dependência de entrada no topo e as linhas de relacionamento de dependência de saída no rodapé. Isto é um avan?o mas ainda existe uma grande polui??o visual dos relacionamentos de dependência entre outras classes (exibidas em cinza). Selecione o bot?o Butterfly Mode para esconder as linhas de relacionamento que n?o fazem parte do relacionamento com o nó Product selecionado.Figura 137Localiza??o do bot?o Butterfly Mode Figura 138Visualiza?ao do leiaute Butterfly ModeNós podemos simplificar a visualiza?a?o dos relacionamentos de dependências e das classes escolhendo a profundidade do detalhamento da ramifica??o. Selecione o bot?o Neighborhood Browse Mode a partir da barra de ferramentas Directed Graph e selecione a op??o 1 Link. Figura 139Localiza??o do bot?o Neighborhood Browse ModeFigura 140Resultado da visualiza??o Neighborhood Browse Mode com1 LinkSelecione o bot?o Quick Clusters para retornar a visualiza??o de layout clusters.Figura 141Localiza??o do bot?o Quick ClustersCaso necessário, utilizae o zoom out para visualizer completamente o gráfico.Figura 142Visualiza??o Quick Clusters exibindo a rela??es diretas entre Product e outras classesLocalize o nó da classe OrderLine e passe o cursor do mouse sobre a linha de relacionamento roxo que conecta o nó da classe Product. Quando o controle de navega??o aparecer, clique no bot?o + para ver os detalhes do relacionamento. Isto iniciará o processo de gera??o de um novo gráfico de dependência.Figura 143Localiza??o do bot?o + para cria??o de um novo gráficoNota: O controle de navega??o que aparece quando você posiciona ou ponteiro do mouse sobre uma linha de relacionamento azul exibe três a??es. As duas setas navegam cada uma para a origem ou para o destino do relacionamento (dependendo do contexto). O bot?o + te ajuda a gerar um novo gráfico contendo apenas os nós de origem e destino.Na janela Generate Dependency Graph, inclua apenas Types e Methods. Nós iremos deixar Assemblies, Namespaces e Externals fora deste novo gráfico. Selecione a op??o Show Containment as group e clique no bot?o OK para gerar o novo gráfico.Figura 144Visualiza??o das op??es do Generate Dependency GraphFigura 145Visualiza??o inicial do gráfico de dependências geradoVamos expander a visualiza??a inicial clicando como bot?o direito do mouse e selecionando Group | Expand All.Selecione o bot?o de leiaute Top to Bottom.Figura 146Gráfico de dependências expandidoAté agora, nós aprendemos apenas algumas coisas adicionais ao relacionamento entre duas classes e seus métodos envolvidos. Para ver mais detalhes sobre o relacionamento entre os métodos, selecione o bot?o Dependency Matrix View.Figura 147Localiza??o do bot?o Dependency Matrix View Figura 148Visualiza??o da matriz de dependênciasA visualiza??o da matriz de dependências nos permite ordenar as linhas e colunas pelo nome. Selecione o bot?o Rows by Display Name ao lado direito do bot?o Dependency Matrix View.A visualiza??o da matriz de dependência deve agora exibir os relacionamentos saindo da classe OrderLine para a classe Product, como você pode ver na dire??o da flecha na Figura 15.Outra op??o que você possui é usar a visualiza??o Reflexive a fim de visualizar os relacionamentos independentemente da dire??o. Selecione o bot?o Show Reflexive View.Figura 149Localiza??o do bot?o Show Reflexive ViewFigura 150Matriz de dependendica ReflexiveExercício 2: Descobrindo Referências CircularesNeste exercício, você irá aprender como usar o analisador de referências circulares para descobrir classes que est?o fortemente acopladas umas as outras.Retorne ao gráfico de dependências original (ClassDependencies1.dgml) e assegure-se que o nó da classe Product está selecionado.Figura 151Gráfico de dependência com a classe Product selecionadaClique com o bot?o direito do mouse dentro do gráfico de dependências e selecione Analyzers | Circular References para identificar quais tipos est?o fortemente acoplados.Retire a sele??o do nó Product clicanco com o bot?o do mouse em alguma area branca do gráfico. Note que existem linhas circulando os tipos que est?o fortemente acoplados a classe Product. Figura 152Gráfico de dependência de classes mostrando referências circulares entre a classes Product e outros tiposNota: Linhas de relacionamento vermelhas indicam referências circulares diretas enquanto as linhas cinzas indicam referências circulares indiretas (existe pelo menos um outro tipo entre elas).Laboratório 8:Utilizando o Architecture ExplorerVis?o geralO Visual Studio 2010 Ultimate Architecture Explorer fornece um modo fácil de navegar pelo seu código e analisar os relacionamentos entre os projetos, tipos, seus assemblies e referências. Neste laboratório você verá como ode usar o Architecture Explorer para examinar uma solu??o existente e criar diagramas DGML din?micos.ExercíciosEste laboratório contém os seguintes exercícios:Introdu??o ao Architecture ExplorerAnalisando a Estrutura de um Projeto usando o Architecture Explorer e DGMLAnalisando Assemblies Externos usando o Architecture ExplorerPré-requisitos? recomendado que você completasse os laboratórios “Lab 6 - Code Discovery utilizando Architecture Tools” e “Lab 7 - Entendendo Acoplamento de Classes” antes de explorar este laboratório.166306586677560 minutos400002000060 minutos16192512382500Exercício 1: Introdu??o ao Architecture ExplorerNeste exercício você irá aprender como usar a ferramenta Architecture Explorer para navegar pela estrutura do código fonte do projeto e gerar diagramas DGML que ajudam a elucidar subconjuntos desta estrutura. Realize o login com o usuário Abu Obeida Bakhach (Dev), caso você ainda n?o o tenha feito. A senha é P2ssw0rd (P maiúsculo, o número dois, duas letras s, a letra w, o número zero, a letra r e a letra d).Abra o Microsoft Visual Studio utilizando o seguinte caminho Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010.No Source Control Explorer (View | Other Windows | Source Control Explorer), navegue para Tailspin Toys | Development | Iteration 2 e clique duas vezes no arquivo TailspinToys.sln para abrir a solu??o Tailspin Toys.Recompile a solu??o (Build | Rebuild Solution a partir do menu principal). Este passo pode levar alguns minutos para completar.Feche a janela Output depois que o processo de compila??o estiver completo.Carregue o Architechture Explorer (View | Architecture Explorer). O Architecture Explorer permite a você navegar pelos tipos e métodos a partir de uma visualiza??o de classe ou de solu??o.Figura 153Vis?o inicial do Architecture ExplorerSelecione a op??o Class View a partir do Architecture Explorer para visualizar todos os namespaces que s?o parte da solu??o Tailspin. A partir deste ponto, clique em um item na extrema direita do painel, isto permitira aprofundar mais nos tipos e membros.Figura 154Visualiza??o do Class view exibindo os namespaces da solu??o TailspinToys Role para encontrar o namespace Tailspin.Admin.App e selecione-o para carregar seus tipos.Figura 155Visualizando os tipos para o namespace Tailspin.Admin.AppSelecione a classe ProductRelationship para carregar seus membros.Figura 156Visualizando os membros da classe ProductRelationshipSelecione a propriedade Product para ver que ela contém dois métodos.Figura 157Visualizando os métodos que implementam a propriedade ProductNote: Este passo ilustra que o Architecture Explorer está operando sobre o código compilado através de reflection. Como você verá a seguir neste laboratório, você pode explorar código .NET compilado diretamente a partir de assemblies compilados.Selecione o método get_Product.Figura 158Selecionando o método get_Product expondo a barra vertical CallsCada nível que aprofundamos dentro dos tipos possui uma barra vertical que exp?e filtros, grupos e outros comandos. Selecione a barra vertical Calls para exibir estas op??es.Figura 159Op??es disponíveis quando trabalhando com nós de tipos e membrosNota: A figura acima n?o é uma representa??o exata sobre o que você deve estar visualizando. Você deverá usar a rolagem para conseguir ver estas op??es.Selecione a op??o Return Types que está em Outbound Navigation para exibir o retorno do tipo de get_Product.Figura 160Procurando pelo tipo de retorno de get_ProductSelecione o tipo de retorno Product para exibir seus membros. Note que nós estamos agora navegando pelo tipo Product, mas nós ainda temos os passos históricos de nossa navega??o.Figura 161Visualizando os membros do tipo ProductSelecione a barra vertical Members logo a esquerda da lista de membros de Product e role para baixo para a sess?o Inbound Navigation.Figura 162Visualizando op??es dos membros de Product Selecione a op??o All Inbound para ver todas as chamadas que referenciam o tipo Product.Figura 163Visualizando referências de entrada para o tipo Product Apesar disto parecer redundante, selecione a classe Product a partir da lista de referências de entradas. Mais uma vez você verá get_Product e set_Product listados.Selecione o bot?o Create New Graph localizado do lado esquerdo do Architecture Explorer. Isto irá criar um novo diagrama DGML exibindo o caminho completo de navega??o que você tomou até este ponto.Figura 164Localiza??o do bot?o Create New GraphFigura 165Representa??o DBML na navega??o manual realizada no Architecture ExplorerUma vez que isto é um diagrama DGML, nós podemos usar todas as ferramentas padr?o para visualizá-lo e adicionar e remover nós. Selecione o nó TailspinToys e pressione a tecla Delete para remove-lo do diagrama.Retorne ao Architecture Explorer e encontre o método set_Product que está contido dentro da classe Product. Arraste e solte set_Product no diagrama DGML.Figura 166Adicionando set_Product ao diagrama DGMLNota: Você pode visualizar a fonte para um tipo clicando com o bot?o direito do mouse neste e selecionando View Content.Limpe as colunas selecionadas no Architecture Explorer selecionando o bot?o Clear Columns.Figura 167Localiza??o do bot?o Clear ColumnsExercício 2: Analisando a Estrutura de um Projeto usando o Architecture Explorer e DGMLNeste exercício, você irá aprender mais sobre os recursos do Architecture Explorer a partir do Solution View. Isto inclui mais exposi??o a navega??o de nós, suporte a filtro e um cenário de exemplo que demonstra o poder da combina??o do Architecture Explorer e dos diagramas DGML para apoiar nas análises de arquitetura.Selecione a op??o Solution View a partir do Architecture Explorer para visualizar todos os projetos que fazem parte da solu??o TailspinToys.Figura 168Exibindo o Solution View para os projetos da solu??o TailspinToys Selecione o projeto Tailspin.Web para obter uma visualiza??o plana dos arquivos.Figura 169Visualizando todos os arquivos do projeto Tailspin.WebNo topo da lista de arquivos existe uma caixa de filtro. Digite “.cs” na caixa de filtro e pressione Enter para restringir a exibi??o dos arquivos àqueles que possuem a exten??o .cs.Figura 170Filtrando os arquivosPressione Ctrl + A para selecionar todos os arquivos .cs e selecione o bot?o Create New Graph.Figura 171Diagrama DGML exibindo os arquivos fonte do projeto Tailspin.WebNota: Caso Ctrl + A n?o funcionar, assegure-se que a lista onde você está digitando possui o foco e um item selecionado.Feche o novo gráfico e retorne ao Architecture Explorer.Selecione o projeto Tailspin.Web novamente para retornar a visualiza??o sem filtro dos arquivos.Selecione a barra vertical de arquivos e a op??o de navega??o Classes para visualizar todas as classes do projeto Tailspin.Web.Figura 172Visualizando as classes de Tailspin.Web Pressione Ctrl + A para selecinar todas as classes e clique no bot?o Create New Graph.Figura 173Diagrama DGML exibindo todas as classes do projeto Tailspin.WebFeche o novo gráfico e retorne ao Architecture Explorer.Limpe a coluna selecionada no Architecture Explorer clicando no bot?o Clear Columns.Selecione Solution View, navegue para o projeto Tailspin.Web mais uma vez e selecione a op??o References na barra vertical de arquivos. Isto irá exibir todos os assemblies referenciados usados pelo projeto.Figura 174Selecionando todos os assemblies para um projetoClique no bot?o Filter no topo da lista de assemblies referenciados e selecione a checkbox Project. Isto irá filtrar todas as referencias que s?o externas a solu??o TailspinToys.Figura 175Localiza??o do bot?o de filtro e da op??o ProjectSelecione o bot?o OK para aceitar as mudan?as de filtro.Selecione todos as refereências de projetos filtradas e clique no bot?o Create New Graph.Apague o nó TailspinToys do diagrama.Figura 176Diagrama DGML exibindo as referências de Tailspin.WebAgora nós podemos explorar os relacionamentos entre Tailspin.SimpleSqlRepository e outros projetos no diagrama. No Architecture Explorer, selecione apenas o item Tailspin.SimpleSqlRepository e mude a visualiza??o dos arquivos para References.Figura 177Lista de referências para o projeto Tailspin.SimpleSqlRepositorySelecione os itens Tailspin.Infrastructure e Tailspin.Model e ent?o arraste e solte dentro do diagrama existente.Figura 178Diagrama DGML exibindo as referencias ao projeto Tailspin.SimpleSqlRepositoryAgora nós podemos criar uma visualiza??o melhor sobre como as classes relacionadas a Product destes projetos se encaixam nesta figura. Retorne ao Architecture Explorer e selecione três referências de projeto.Selecione a barra vertical de arquivos e a op??o Classes para visualizar todas as classes a partir dos projetos selecionados.Na caixa de filtro, digite “Product” e pressione Enter para ver as classes que contém.Selecione todas as classes e arraste e solte no diagrama DGML existente.Figura 179Diagrama DGML atualizado exibindo como a classe Product se relaciona com os projetos existentesSelecione a classe ProductList a partir do diagram DGML e clique no bot?o Butterfly Mode a partir da barra de ferramentas Directed Graph. Isto remove os nós que n?o se referenciam diretamente a ProductList.Figura 180O bot?o Butterfly ModeFigura 181Visualiza??o Butterfly Mode para ProductListClique no bot?o Butterfly Mode mais uma vez para desligar.Selecione o bot?o Quick Clusters e coloque o gráfico no espa?o total da tela usando o recurso zoom fit. Note que agora está fácil visualizar que o projeto Tailspin.SimpleSqlRepository e suas classes Product s?o responsáveis pelo acesso a dados.Figura 182A visualiza??o do bot?o Quick ClustersFigura 183Visualiza??o Quick Clusters do gráfico atual de dependênciasAgora nós podemos ver como o administrador da Tailspin se encaixa na arquitetura como um todo. Limpe os bot?es selecionados no Architecture Explorer clicando no bot?o Clear Columns.Selecione Solution View e a seguir Tailspin.Admin.App.Selecione a barra vertical de arquivos e selecione a op??o References. Note que n?o há referências a qualquer dos projetos Tailspin. Existem referências para System.Data.dll e System.Data.Linq.dll, logo talvez o a administra??o da aplica??o esteja acessando diretamente o banco de dados.Selecione a barra vertical atualmente exibindo as referências (References) e selecione a op??o Classes.Selecione todas as classes que come?am com Product.Figura 184Selecionando as classes de produtos relacionadas para a aplica??o administrativa de TailspinClique no bot?o Create New Graph.Figura 185Diagrama DGML exibindo a aplica??o Tailspin admin e as classes ProductApague o nó da solu??o TailspinToys do diagrama.Noque que aqui n?o há chamadas ao código de acesso a dados Tailspin.SimpleSqlRepository. Clique com o bot?o direito em algum lugar dentro do gráfico DGML e seleciona Save As XPS... Nós agora vamos criar um work item e atribuir isto para uma investiga??o futura.Figura 186Salvando o diagrama DGML como XPSNomeie o arquivo XPS como “AdminAppReview” e clique no bot?o Save.No Team Explorer, clique com o bot?o direito no nó Work Items para o projeto TailspinToys e selecione a op??o New Work Item | Task.Preencha os seguintes campos como exibidos na tabela abaixo:Work Item FieldValueTitleReview why Admin app is not using the Data Access Layer projectAssigned ToMichael Affronti (PM)Stack Rank1Details DescriptionTake a look at the attached diagram. Notice how we’re using Product data but not getting it via the Tailspin data access project.Selecione a aba Attachments e clique no bot?o Add.Figura 187Localiza??o da aba Attachments e do bot?o AddSelecione o bot?o Browse e o arquivo XPS que você salvou.No campo Comment, digite “Snapshot of current Admin app.”Selecione o bot?o OK para adicionar o arquivo ao novo work item.Clique no bot?o Save Work Item para finalizar o processo de cria??o do novo work item.Figura 188Localiza??o do bot?o Save Work ItemFeche todas as janelas abertas no Visual Studio, inclusive a do novo work item e dos gráficos existentes. Você n?o precisa salvar os gráficos existentes.Apague as colunas selecionadas do Architecture Explorer selecionando o bot?o Clear Columns.Exercício 3: Analisando Assemblies Externos usando o Architecture ExplorerNeste exercício, você irá aprender como carregar e navegar pelos assemblies .NET externos. Isto pode lhe ajudar a ganhar conhecimento sobre a arquitetura dos frameworks ou aplica??es dos quais você n?o possui o projeto ou códigos fonte.Selecione a op??o Select Files a partir do Architecture Explorer. Isto irá permiter a você carregar assemblies .NET compilados e analisá-los como você fez com os Class e Solution Views.Figura 189Select Files permite a você carregar e navegar por qualquer assembly .NETNa caixa File Name, digite “c:\windows\\framework\v4.0.30319” e pressione a tecla Enter.Nota: Se o diretório v4.0.30319 n?o estiver disponível, selecione o mais recente.Na caixa de texto File Name, digite “System.Data.dll” e clique no bot?o Open para continuar.Selecione o arquivo System.Data.dll para ver seus tipos.Figura 190Visualizando os tipos de System.Data.dll Selecione o bot?o de filtro no topo da lista de tipos e selecione a checkbox Class e a checkbox IsPublic.Figura 191Criando um filtro para as classes públicasPressione o bot?o OK para ver a lista de classes públicas do assembly System.Data.dll.Digite “sql” na caixa de texto de filtro no topo da lista e pressione Enter. Ent?o você verá os tipos que contem o texto.Figura 192Filtrando por um textoSelecione todos os tipos listados e clique no bot?o Create New Graph.Figura 193Diagrama DGML exibindo System.Data.dll e suas classesPara quest?es sobre este material envie um e-mail para contato@.brCopyright ? 2011 por Allmatech TI e Microsoft Corporation. Todos os direitos reservados. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches