<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Luiz Macedo</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/luizmacedo/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/luizmacedo/feed.xml</link>
    <description>Blog sobre VSTS, TFS, ALM, DevOps, Azure, Visual Studio e outras coisas mais...</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:24:28 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Atualizando para o TFS 2017</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/atualizando-para-o-tfs-2017</link>
      <pubDate>Mon, 21 Nov 2016 10:28:53 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/?p=1775</guid>
      <description><![CDATA[E finalmente o Team Foundation Server 2017 foi lançado e muitas novidades boas vieram com ele. Eu...]]></description>
      <content:encoded><![CDATA[<p align="justify">E finalmente o Team Foundation Server 2017 foi lançado e muitas novidades boas vieram com ele. Eu irei demonstrar algumas novas funcionalidades nos próximos posts, mas por enquanto, precisamos ter ele atualizado.
Se tiverem interesse em saber quais foram as novas features do produto, vejam no Release Notes oficial: <a href="https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-relnotes" title="https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-relnotes">https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-relnotes</a></p>
<p align="justify">Vamos a instalação e configurações. Os primeiros passos são os mesmos da última versão, basta iniciar a instalação e seguir o passo-a-passo.</p>
<p align="justify"></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/127.png"><img title="1" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="1" src="https://msdnshared.blob.core.windows.net/media/2016/11/1_thumb.png" width="275" border="0" height="406" /></a>              <a href="https://msdnshared.blob.core.windows.net/media/2016/11/219.png"><img title="2" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="2" src="https://msdnshared.blob.core.windows.net/media/2016/11/2_thumb.png" width="275" border="0" height="406" /></a></p>
<p align="justify"></p>
<p align="justify">Após instalado, vamos as primeiras configurações. Nessa primeira tela já podemos ver algumas diferenças no produto, como a configuração da nova funcionalidade de <a target="_blank" href="https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-relnotes#codesearch">Search</a>. Iremos fazer essa configuração durante o processo de upgrade, mas não é obrigatória, por isso temos ela aqui, para quando houver necessidade de instalar em um TFS já configurado. Vamos selecionar “Configure Team Foundation Server” e clicar em Start Wizard.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/318.png"><img title="3" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="3" src="https://msdnshared.blob.core.windows.net/media/2016/11/3_thumb.png" width="603" border="0" height="445" /></a>

</p>
<p align="justify">A primeira decisão é se será uma nova instalação de TFS ou um Upgrade. Nesse caso farei o upgrade das bases existentes.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/415.png"><img title="4" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="4" src="https://msdnshared.blob.core.windows.net/media/2016/11/4_thumb.png" width="604" border="0" height="439" /></a>

</p>
<p align="justify">Escreva o nome da instancia dos bancos de dados existentes do TFS e clique em “List Available Databases” para verificar se o banco de dados existe e está em uma versão suportada para upgrade. Além disso, garanta que os backups foram feitos, clique no ckeckbox “By checking this box, I confirm that I have a current backup” e clique em “Next”.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/512.png"><img title="5" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="5" src="https://msdnshared.blob.core.windows.net/media/2016/11/5_thumb.png" width="606" border="0" height="440" /></a>

</p>
<p align="justify">Essa tela é uma outra novidade muito útil. Aqui temos dois cenários diferentes:

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/612.png"><img title="6" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="6" src="https://msdnshared.blob.core.windows.net/media/2016/11/6_thumb.png" width="605" border="0" height="440" /></a></p>

<ol>
 	<li>
<div align="justify">Production Upgrade
Selecionando esse primeiro cenário, o upgrade acontece como era nas versões anteriores, sem muito segredo.</div></li>
 	<li>
<div align="justify">Pre-Production Upgrade Testing
Selecionando o segundo cenário, outros passos serão executados durante o procedimento de upgrade. Para executar o upgrade em um ambiente de pré-produção ou homologação do TFS, que normalmente utiliza bancos de dados restaurados do ambiente de produção, devemos tomar alguns cuidados para não interferir no funcionamento do ambiente de produção.</div></li>
</ol>
<p align="justify">
Caso seja uma atualização do ambiente de homologação, a tela abaixo será apresentada explicando os detalhes dos procedimentos adicionais que serão executados. Além disso é recomendado que nesse servidor de pré-produção o arquivo hosts da máquina seja alterado para que de nenhuma forma esse servidor encontre os servidores de produção. Também é recomendado a utilização de usuários específicos para esse ambiente, e não utilizar os mesmos usuários do TFS de produção.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/712.png"><img title="7" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="7" src="https://msdnshared.blob.core.windows.net/media/2016/11/7_thumb.png" width="605" border="0" height="439" /></a>

</p>
<p align="justify">Em meu caso, estou fazendo o procedimento já em ambiente de produção, sendo assim, escolhi o primeiro cenário. Após selecionar o cenário que deseja executar, clique em “Next”, na próxima tela escolha o usuário e senha que será utilizada para a conta de serviço do TFS.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/812.png"><img title="8" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="8" src="https://msdnshared.blob.core.windows.net/media/2016/11/8_thumb.png" width="604" border="0" height="439" /></a></p>
<p align="left">
Escolha se o endereço do TFS irá utilizar HTTPs e HTTP, somente HTTP, ou se ficará no endereço default já conhecido das antigas instalações. Ex.: <a href="https://TfsAppTier:8080/tfs">https://TfsAppTier:8080/tfs</a>. Vou utilizar a configuração default como já estava utilizando, e também habilitar a configuração de SSH. Se escolher utilizar HTTPs, configure com um certificado válido. Para mais detalhes: <a href="https://www.visualstudio.com/en-us/docs/setup-admin/websitesettings" title="https://www.visualstudio.com/en-us/docs/setup-admin/websitesettings">https://www.visualstudio.com/en-us/docs/setup-admin/websitesettings</a>

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/99.png"><img title="&#096;9" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="&#096;9" src="https://msdnshared.blob.core.windows.net/media/2016/11/9_thumb.png" width="604" border="0" height="446" /></a></p>
<p align="justify">
Como dito no início do post, é possível instalar e configurar a funcionalidade de Search durante o processo de Upgrade. Sendo assim, selecione o checkbox “install and configure search”. Como é a primeira vez que estou instalando o serviço, vou selecionar a opção de nova instalação, porém se já tiver configurado, pode utilizar a mesma. Escolha a pasta onde serão indexados os arquivos de busca. É recomendado que esses arquivos sejam armazenados em um SSD para garantir a performance.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/104.png"><img title="10" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="10" src="https://msdnshared.blob.core.windows.net/media/2016/11/10_thumb.png" width="618" border="0" height="534" /></a></p>
<p align="center"><strong>Nota:</strong> Para que o Search funcione, alguns pré-requisitos são necessários. Vamos falar deles mais a baixo, no momento de validação.

</p>
<p align="left">Irei utilizar o mesmo usuário e senha que utilizo no serviço do TFS, pois estou fazendo o upgrade em um laboratório de testes, mas recomendo que seja criada uma nova conta para esse serviço, assim como é feito com os outros serviços do TFS.</p>
<p align="left">Como as outras configurações daqui para a frente continuam as mesmas, irei passar rapidamente por elas. Aqui vamos configurar novamente o Reporting Services e Analysis Services. Como não estou utilizando o Sharepoint, irei pular essa configuração.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/1113.png"><img title="11" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="11" src="https://msdnshared.blob.core.windows.net/media/2016/11/11_thumb.png" width="615" border="0" height="531" />
</a></p>
<p align="left">Como nesse caso o Report Server já existia e estava configurado, preencha a instancia de Reporting Services e clique em “Populate URLs” para o autopreenchimento.</p>
<p align="center">
<a href="https://msdnshared.blob.core.windows.net/media/2016/11/128.png"><img title="12" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="12" src="https://msdnshared.blob.core.windows.net/media/2016/11/12_thumb.png" width="615" border="0" height="533" /></a></p>
<p align="left">Preencha a instancia do SQL Server para identificar o Tfs_Warehouse.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/133.png"><img title="13" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="13" src="https://msdnshared.blob.core.windows.net/media/2016/11/13_thumb.png" width="616" border="0" height="534" /></a></p>
<p align="left">
Preencha a instancia onde está configurado o Analysis services.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/143.png"><img title="14" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="14" src="https://msdnshared.blob.core.windows.net/media/2016/11/14_thumb.png" width="614" border="0" height="533" /></a></p>
<p align="left">
Preencha o usuário e senha do Reports.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/152.png"><img title="15" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="15" src="https://msdnshared.blob.core.windows.net/media/2016/11/15_thumb.png" width="613" border="0" height="530" /></a></p>

A configuração do Sharepoint não será feita nesse laboratório.
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/162.png"><img title="16" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="16" src="https://msdnshared.blob.core.windows.net/media/2016/11/16_thumb.png" width="619" border="0" height="437" /></a></p>
<p align="left">
Após todas as configurações, vamos verificar se todas estão corretas. Clique em “Verify”.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/172.png"><img title="17" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="17" src="https://msdnshared.blob.core.windows.net/media/2016/11/17_thumb.png" width="620" border="0" height="515" /></a></p>
<p align="left">
Como dito anteriormente, com a nova funcionalidade do Search, alguns pré-requisitos devem ser atendidos. Nesse caso precisamos instalar o Oracle Server JRE 7 Update 55 (ou maior), ou o JRE 8 Update 20 (ou maior). Podemos instalar primeiro e validar novamente a instalação, ou aceitar os termos e ele será instalado e configurado pela própria instalação do TFS. Veja que nesse ponto ele vai criar a variável JAVA_HOME. Vou aceitar os termos e clicar em “Configure”.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/182.png"><img title="18" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="18" src="https://msdnshared.blob.core.windows.net/media/2016/11/18_thumb.png" width="622" border="0" height="514" /></a></p>
<p align="left">
Após a configuração, todos os requisitos serão validados e finalizados.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/192.png"><img title="19" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="19" src="https://msdnshared.blob.core.windows.net/media/2016/11/19_thumb.png" width="620" border="0" height="512" /></a></p>

Clique em “Next” para ver o resumo do processo de upgrade.
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/201.png"><img title="20" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="20" src="https://msdnshared.blob.core.windows.net/media/2016/11/20_thumb.png" width="625" border="0" height="516" /></a></p>
<p align="left">
Clicando em “Next” novamente teremos alguns detalhes, como por exemplo, a configuração do JAVA_HOME, exceção do firewall, etc.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/2110.png"><img title="21" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="21" src="https://msdnshared.blob.core.windows.net/media/2016/11/21_thumb.png" width="625" border="0" height="517" /></a></p>
<p align="left">
Por fim, clique em “close” e abra a URL do TFS e o TFS Console para validar o upgrade.

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/223.png"><img title="22" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="22" src="https://msdnshared.blob.core.windows.net/media/2016/11/22_thumb.png" width="616" border="0" height="432" /></a></p>
<p align="left">
Upgrade realizado com sucesso e com novas ótimas features!!!

</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/232.png"><img title="23" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="23" src="https://msdnshared.blob.core.windows.net/media/2016/11/23_thumb.png" width="620" border="0" height="402" /></a></p>
<p align="center"></p>
<p align="left">Por hoje é só!! Até a próxima!</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Emulator for Android com Android Studio</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/visual-studio-emulator-for-android-com-android-studio</link>
      <pubDate>Wed, 27 Jul 2016 10:00:21 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/?p=1295</guid>
      <description><![CDATA[Para quem desenvolve para Android e sofre tem dificuldade com a velocidade dos emuladores do Android...]]></description>
      <content:encoded><![CDATA[<p align="justify">Para quem desenvolve para Android e <span style="text-decoration: line-through">sofre</span> tem dificuldade com a velocidade dos emuladores do Android SDK, a Microsoft criou um emulador com muito mais performace do que os emuladores existentes. Outra grande vantagem desse emulador é que vem em uma instalação a parte que não depende de Visual Studio instalado.</p>
<p align="justify">O primeiro passo é garantir que o <a href="https://developer.android.com/studio/index.html" target="_blank">Android Studio</a> e o <a href="https://www.visualstudio.com/explore/msft-android-emulator-vs" target="_blank">Visual Studio Emulator for Android</a> estão instalados e funcionando. Com o Emulador instalado, assim que você abrir o Android Studio para tentar executar a aplicação, se o Visual Studio Emulator estiver aberto, o Android Studio vai encontrar ele como um possível dispositivo conectado para execução da aplicação. Ou seja, não precisaríamos fazer os passos a seguir para que uma aplicação criada no Android Studio executasse no novo emulador Visual Studio Emulator for Android. Porém esses passos a seguir facilitam a utilização do emulador no dia a dia, pois adiciona atalhos no Android Studio, evitando ter que iniciar o emulador fora da IDE. Vamos para as configurações dos atalhos:</p>
<p align="justify">Abra o Android Studio –&gt; Run –&gt; Edit configurations…</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/18.jpg"><img title="1" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="1" src="https://msdnshared.blob.core.windows.net/media/2016/07/1_thumb1.jpg" border="0" height="222" width="325" /></a></p>
<p align="justify">Expandir o menu Defaults –&gt; Clicar em Android Application. Em Deployment Target Options selecionar “Show Device Chooser Dialog” e clicar no checkbox “Use same device for future launches” e clique em OK. Com isso toda execução da aplicação irá abrir a janela perguntando qual o Device que deve ser utilizado e lembrará a opção definida.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/230.png"><img title="2" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="2" src="https://msdnshared.blob.core.windows.net/media/2016/07/2_thumb2.png" border="0" height="491" width="758" /></a></p>
<p align="justify">Agora clique em File –&gt; Settings –&gt; Tools –&gt; External Tools –&gt; Add.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/326.png"><img title="3" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="3" src="https://msdnshared.blob.core.windows.net/media/2016/07/3_thumb2.png" border="0" height="515" width="757" /></a></p>
<p align="justify">Aqui vamos adicionar o Emulator Manager ou os emuladores que serão utilizados.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/420.png"><img title="4" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="4" src="https://msdnshared.blob.core.windows.net/media/2016/07/4_thumb2.png" border="0" height="375" width="626" /></a></p>
<p align="justify">Preencha o campo Name para identificar a ferramenta e uma descrição. Nos outros campos preencha:</p>
<p align="justify"><strong>Program:</strong> C:\Program Files (x86)\Microsoft Emulator Manager\1.0\emulatormgr.exe</p>
<p align="justify"><strong>Parameters:</strong> /sku:Android</p>
<p align="justify">Clique em OK.</p>
<p align="justify">Working directory: $ProjectFileDir$ (vou utilizar uma variavel que é substituída pela pasta do projeto)</p>
<p align="justify">Nesse caso cadastrei primeiro a ferramenta para abrir o gerenciador de emuladores, por isso selecionei o emulatormgr.exe que está na pasta de instalação do emulador.</p>
<p align="justify">Agora vamos cadastrar um atalho para abrir direto um dos emuladores instalados. Abra o prompt de comando na pasta em que o emulador foi instalado (nesse exemplo: C:\Program Files (x86)\Microsoft Emulator Manager\1.0\) e digite: “emulatorcmd.exe /sku:Android list /type:device”. Esse comando irá listar todos os emuladores instalados, suas versões e identificadores.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/613.png"><img title="6" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="6" src="https://msdnshared.blob.core.windows.net/media/2016/07/6_thumb2.png" border="0" height="167" width="614" /></a></p>
<p align="justify">Com isso em mãos, adicione uma nova External tool clicando em Add. Novamente preencha os campos, mas agora com outras informações:</p>
<p align="justify"><strong>Name:</strong> 5.1" Marshmallow (6.0.0) XXHDPI Phone (Escrevi o mesmo nome de um dos emuladores listados acima que estou adicionando)</p>
<p align="justify"><strong>Program:</strong> C:\Program Files (x86)\Microsoft Emulator Manager\1.0\emulatorcmd.exe (note que agora não estamos abrindo o gerenciador, e sim vamos selecionar um dos emuladores)</p>
<p align="justify"><strong>Parameters:</strong> /sku:Android launch /id:8AB3CF93-0E9D-4EF8-B132-66D6D7AB4820 (O mesmo ID referente ao emulador da lista)</p>
<p align="justify">Clique em OK e OK novamente para finalizar após adicionar os emuladores que pretende utilizar.</p>
<p align="justify">Clique com o botão direito na barra de ferramentas do Android Studio –&gt; Customize Menos and Toolbars…</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/712.png"><img title="7" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="7" src="https://msdnshared.blob.core.windows.net/media/2016/07/7_thumb2.png" border="0" height="89" width="369" /></a></p>
<p align="justify">Vamos expandir a área Main Toolbar. Escolha o local onde vai adicionar os atalhos do Emulador criados anteriormente. Em meu caso criei após o último ícone, help. Se quiser fazer o mesmo, clique no link Help Topics –&gt; clique no botão Add After…</p>
<p align="justify">Com isso irá abrir uma nova janela para escolher os atalhos. Clique em All Actions –&gt; External Tools –&gt; External Tools –&gt; Selecione os emuladores cadastrados e clique em OK. Você pode selecionar um novo ícone para esses atalhos. Para finalizar clique em OK novamente.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/89.png"><img title="8" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="8" src="https://msdnshared.blob.core.windows.net/media/2016/07/8_thumb2.png" border="0" height="499" width="632" /></a></p>
<p align="justify">Os ícones foram criados e estão na barra de ferramentas da IDE. Agora clique no ícone de algum dos emuladores criados para abrir o emulador.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/106.png"><img title="10" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="10" src="https://msdnshared.blob.core.windows.net/media/2016/07/10_thumb1.png" border="0" height="507" width="266" /></a></p>
<p align="justify">Por fim com a aplicação aberta no Android Studio e com o emulador funcionando, clique em play para executar a aplicação e uma janela será aberta perguntando onde deve ser executada.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/1113.png"><img title="11" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="11" src="https://msdnshared.blob.core.windows.net/media/2016/07/11_thumb1.png" border="0" height="427" width="538" /></a></p>
<p align="justify">Clique no emulador do Visual Studio “VS Emulador” e clique em OK. Sua aplicação será executada no novo emulador.</p>
<p align="justify">That’s it.</p>
<p align="justify">Referência: <a href="https://blogs.msdn.microsoft.com/visualstudioalm/2015/07/20/using-the-visual-studio-emulator-for-android-from-android-studio-or-eclipse-with-adt">https://blogs.msdn.microsoft.com/visualstudioalm/2015/07/20/using-the-visual-studio-emulator-for-android-from-android-studio-or-eclipse-with-adt</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Instalando SonarQube no Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/instalando-sonarqube-no-azure</link>
      <pubDate>Mon, 25 Jul 2016 10:25:39 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/?p=1115</guid>
      <description><![CDATA[Nesse post vou demonstrar como instalar o SonarQube no Azure. Para quem não conhece o Sonar, vale...]]></description>
      <content:encoded><![CDATA[<p align="justify">Nesse post vou demonstrar como instalar o <a href="https://www.sonarqube.org/" target="_blank">SonarQube</a> no <a href="https://azure.microsoft.com/pt-br" target="_blank">Azure</a>. Para quem não conhece o Sonar, vale muito a pena conhecer. Basicamente ele é uma ferramenta para evidenciar e gerenciar o débito técnico de aplicações. A muito tempo é conhecido pelos profissionais da comunidade open source, porém sua utilização vem se tornando muito grande por profissionais Microsoft, principalmente devido ao fato de agora ter uma integração nativa com o TFS/VSTS.</p>
<p align="justify">Como estou fazendo essa instalação para laboratório de testes, utilizei o <a href="https://azure.microsoft.com/pt-br/services/devtest-lab/" target="_blank">Azure DevTest Labs</a> para criar minha VM. Ele facilita muito por já ter os templates de VMs que normalmente preciso, além de algumas outras funcionalidades de que gosto muito, como auto-start e auto-shutdown. O Sonar <a href="https://docs.sonarqube.org/display/SONAR/Requirements#Requirements-SupportedPlatforms" target="_blank">suporta diversas versões</a> de banco de dados, porém utilizei o SQL Server 2014 SP1 Express rodando em um Windows Server 2012 R2.</p>
<p align="justify">No Azure DevTest Labs clique em + Virtual machine e selecione o template “SQL Server 2014 SP1 Express on Windows Server 2012 R2”:</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/0.jpg"><img title="0" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="0" src="https://msdnshared.blob.core.windows.net/media/2016/07/0_thumb.jpg" border="0" height="76" width="788" /></a></p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/24.jpg"><img title="2" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="2" src="https://msdnshared.blob.core.windows.net/media/2016/07/2_thumb1.jpg" border="0" height="35" width="535" /></a></p>
<p align="justify">Após isso basta preencher as informações (Nome, Usuário, Senha, etc.), escolher o tamanho da máquina a ser utilizada, rede, subnet e clicar em Create:</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/34.jpg"><img title="3" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="3" src="https://msdnshared.blob.core.windows.net/media/2016/07/3_thumb1.jpg" border="0" height="508" width="204" /></a></p>
<p align="justify">Após alguns instantes a máquina será criada e disponibilizada para utilização. É possível se conectar na máquina virtual via RDP ou clicando em Connect no portal do Azure. Caso você esteja utilizando uma máquina virtual que não esteja no DevTest Labs, será necessário <a href="https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-classic-setup-endpoints/" target="_blank">liberar os endpoints</a> das portas de SQL (Default: 1433) e do Sonar (Default: 9000) para acesso externo.</p>
<p align="justify">Um dos pré-requisitos para o SonarQube é a instalação do <a href="https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank">Java</a>. Faça a instalação seguindo os passos recomendados pelo produto e não esqueça de criar a variável de ambiente JAVA_HOME e atualizar o Path do Windows com o endereço de instalação.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/62.jpg"><img title="6" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="6" src="https://msdnshared.blob.core.windows.net/media/2016/07/6_thumb.jpg" border="0" height="466" width="802" /></a></p>
<p align="justify">Os próximos passos são as configurações do SQL Server. Para iniciar basta abrir o SQL Management Studio e clicar em connect. Após isso clique com o botão direito na instância de SQL e em propriedades.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/42.jpg"><img title="4" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="4" src="https://msdnshared.blob.core.windows.net/media/2016/07/4_thumb.jpg" border="0" height="500" width="799" /></a></p>
<p align="justify">Clique em Security –&gt; SQL Server and Windows Authentication mode –&gt; OK.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/52.jpg"><img title="5" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="5" src="https://msdnshared.blob.core.windows.net/media/2016/07/5_thumb.jpg" border="0" height="459" width="496" /></a></p>
<p align="justify">Além disso o Sonar precisa de um usuário com acesso ao SQL Server. Como é um cenário para laboratório, criei um novo usuário no SQL Server com permissão de sysadmin. Para isso clique em Server Roles –&gt; sysadmin.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/82.jpg"><img title="8" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="8" src="https://msdnshared.blob.core.windows.net/media/2016/07/8_thumb.jpg" border="0" height="461" width="500" /></a></p>
<p align="justify">Agora é possível criar nosso banco de dados do Sonar. Clique em botão direito em Databases –&gt; New database. De um nome para o banco de dados e clique em options para trocar a collation. Esse é um dos passos mais importantes, pois é o requisito principal de banco de dados para o Sonar. Selecione a collation SQL_Latin1_General_CP1_CS_AS e clique em OK.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/92.jpg"><img title="9" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="9" src="https://msdnshared.blob.core.windows.net/media/2016/07/9_thumb.jpg" border="0" height="460" width="504" /></a></p>
<p align="justify">A última configuração necessária para o SQL Server agora é habilitar o protocolo TCP. Abra o Sql Server Configuration Manager –&gt; SQL Server Network Configuration –&gt; Protocols for MSSQLSERVER  -&gt; Botão direito em TCP/IP –&gt; Enable. Reinicie o serviço de SQL Server para que as alterações de segurança tenham efeito.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/9.1.jpg"><img title="9.1" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="9.1" src="https://msdnshared.blob.core.windows.net/media/2016/07/9.1_thumb.jpg" border="0" height="367" width="502" /></a></p>
<p align="justify">Agora vamos para a instalação do Sonar. Faça o download do Sonar em <a title="https://www.sonarqube.org/downloads" href="https://www.sonarqube.org/downloads">https://www.sonarqube.org/downloads</a>. Clique com o botão direito no arquivo –&gt; Properties –&gt; Unblock –&gt; OK.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/102.jpg"><img title="10" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="10" src="https://msdnshared.blob.core.windows.net/media/2016/07/10_thumb.jpg" border="0" height="431" width="306" /></a></p>
<p align="justify">Extraia o arquivo para a pasta que gostaria que ficasse instalado. Em meu caso vou deixar em C:\sonarqube-5.6. Agora vamos configurar o Sonar para indicar o banco de dados que ele irá utilizar, assim como o usuário, senha e endereço de serviço. Entre na pasta onde o Sonar foi extraido –&gt; conf –&gt; abra o arquivo sonar.properties.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/122.jpg"><img title="12" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="12" src="https://msdnshared.blob.core.windows.net/media/2016/07/12_thumb.jpg" border="0" height="340" width="625" /></a></p>
<p align="justify">Com o arquivo aberto procure o bloco “# User credentials.”, remova o comentário (#) das linhas sonar.jdbc.username e sonar.jdbc.password e preencha as informações do usuário adicionado no SQL Server e a senha:</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/131.jpg"><img title="13" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="13" src="https://msdnshared.blob.core.windows.net/media/2016/07/13_thumb.jpg" border="0" height="99" width="622" /></a></p>
<p align="justify">Altere também a conexão com o banco de dados. Remova o comentário (#) e atualize com as informações do banco de dados criado:</p>
<p align="justify">sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=SonarQube;SelectMethod=Cursor</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/141.jpg"><img title="14" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" alt="14" src="https://msdnshared.blob.core.windows.net/media/2016/07/14_thumb.jpg" border="0" height="59" width="633" /></a></p>
<p align="justify">Feche o arquivo e salve. Com esses passos, o Sonar já está configurado e pronto para funcionar. É possivel executa-lo por linha de comando, porém vou demonstrar como configura-lo como serviço.</p>
<p align="justify">Pelo CMD/Powershell vá até a pasta de instalação do Sonar –&gt; bin –&gt; windows-x86-64.</p>
<strong>DICA:</strong> Se você estiver na pasta onde deseja executar o comando, clique na barra de endereços, remova todo o endereço e digite “CMD” ou “Powershell” e aperte “Enter”. Ele vai abrir já com o command line na pasta.
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/161.jpg"><img title="16" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="16" src="https://msdnshared.blob.core.windows.net/media/2016/07/16_thumb.jpg" border="0" height="33" width="582" /></a></p>
<p align="justify">Execute o comando InstallNTService e aperte enter para instalar o Sonar como serviço. Ainda no CMD digite o comando “sc config SonarQube depend= MSSQLSERVER” (sem os aspas) para que o novo serviço do Sonar seja dependente do serviço de SQL Server (Somente se o Sonar estiver sendo instalado na mesma máquina do SQL Server). Assim caso o SQL Server não esteja sendo executado, o Sonar também não será.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/17.jpg"><img title="17" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="17" src="https://msdnshared.blob.core.windows.net/media/2016/07/17_thumb.jpg" border="0" height="305" width="581" /></a></p>
<p align="justify">Com isso o Sonar foi instalado como um Windows Service. Entre agora nos serviços do windows (Win+R = services.msc) e encontre o serviço do Sonar para alterar o usuário e senha de execução. Clique com o botão direito no serviço –&gt; Log on –&gt; This account –&gt; Preencha o usuário e senha que o Sonar irá utilizar –&gt; clique OK. Por fim, clique com o botão direito e inicie o serviço clicando em Start.</p>
<p align="justify">Se todas as configurações estiverem de acordo, abra o browser por dentro da VM e digite o endereço do Sonar: https://localhost:9000 e aperte enter.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/19.jpg"><img title="19" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="19" src="https://msdnshared.blob.core.windows.net/media/2016/07/19_thumb.jpg" border="0" height="464" width="799" /></a></p>
<p align="justify">Se quiser que o endereço fique disponível para acesso externo, abra novamente o prompt de comando e digite “netsh advfirewall firewall add rule name="SonarQube" dir=in action=allow protocol=TCP localport=9000” para liberar a porta 9000 no firewall e garantir o acesso. Isso pode ser feito também com a porta do SQL Server.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/20.jpg"><img title="20" style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" alt="20" src="https://msdnshared.blob.core.windows.net/media/2016/07/20_thumb.jpg" border="0" height="461" width="810" /></a></p>
<p align="justify">O Sonar está pronto para ser utilizado!</p>
<p align="justify">That’s it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Instalando Android SDK no Ubuntu Server 16.04 LTS no Azure DevTestLabs</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/instalando-android-sdk-no-ubuntu-server-16-04-lts-no-azure-devtestlabs</link>
      <pubDate>Wed, 20 Jul 2016 19:09:26 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/?p=745</guid>
      <description><![CDATA[Tive a necessidade de criar um novo build host para build de aplicações Android, para isso criei uma...]]></description>
      <content:encoded><![CDATA[<p align="justify">Tive a necessidade de criar um novo build host para build de aplicações Android, para isso criei uma nova VM em meu Azure DevTestLabs com Ubuntu Server 16.04 LTS. Eu já havia criado e configurado um Build Definition para a aplicação, porém não estava finalizando com sucesso devido a falta do Android SDK.</p> <p align="justify">Para conectar na VM estou utilizando o <a href="https://msdn.microsoft.com/en-us/commandline/wsl/about" target="_blank">Bash on Ubuntu on Windows</a> do Windows 10.</p> <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/16.jpg"><img title="1" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="1" src="https://msdnshared.blob.core.windows.net/media/2016/07/1_thumb.jpg" width="245" height="387"></a></p> <p align="justify">Entrei na VM utilizando SSH e executei alguns comandos para instalar os pré-requisitos e a SDK:</p> <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/23.jpg"><img title="2" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="2" src="https://msdnshared.blob.core.windows.net/media/2016/07/2_thumb.jpg" width="629" height="332"></a></p> <p align="justify"><strong>Atualização de pacotes:</strong></p> <div align="justify"><pre>sudo apt-get update</pre></div>
<p align="justify"><br><strong>Instalação do Java:</strong><br></p>
<div align="justify"><pre>sudo apt-get install default-jdk</pre></div>
<p align="justify"><br><strong>Instalação do OpenJDK:</strong><br></p>
<div align="justify"><pre>sudo apt-get install openjdk-8-jre</pre></div>
<p align="justify"><br><strong>Download do Android SDK:</strong><br></p>
<div align="justify"><pre>wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

tar -xvf android-sdk_r24.4.1-linux.tgz
cd android-sdk-linux/tools</pre></div>
<p align="justify"><br><strong>Instalação dos pacotes SDK:</strong><br></p>
<div align="justify"><pre>./android update sdk --no-ui</pre></div>
<p align="justify"><br><strong>Configurando JAVA_HOME e Path:</strong><br></p>
<div align="justify"><pre>sudo update-alternatives --config java

<strong>#Abrir /etc/environment</strong>
sudo nano /etc/environment

<strong>#Adicionar complemento ao Path</strong>
PATH=${PATH}:$HOME/sdk/android-sdk-linux/platform-tools:$HOME/sdk/android-sdk-linux/tools:$HOME/sdk/android-sdk-linux/build-tools/24.0.1/

<strong>#Adicionar o caminho no final do arquivo</strong>
JAVA_HOME="/usr/bin/java

<strong>#Atualizar o arquivo</strong>
source /etc/environment</pre></div>
<p align="justify">Build com sucesso!!</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/07/33.jpg"><img title="3" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="3" src="https://msdnshared.blob.core.windows.net/media/2016/07/3_thumb.jpg" width="604" height="357"></a></p>
<p align="justify">That’s it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Executando testes cross-browser com Coded UI e Selenium integrados</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/executando-testes-cross-browser-com-coded-ui-e-selenium-integrados</link>
      <pubDate>Wed, 25 May 2016 10:00:29 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/?p=675</guid>
      <description><![CDATA[Acredito que um excelente motivo para utilizar o Selenium integrado ao Coded UI para executar testes...]]></description>
      <content:encoded><![CDATA[<p align="justify">Acredito que um excelente motivo para utilizar o Selenium integrado ao Coded UI para executar testes automatizados, é a incrível velocidade com que os testes são executados. Além disso também temos o benefício de poder executar em outros browsers como o Firefox, Chrome, etc.</p>
<p align="justify">Para gravar o cenário de testes vou utilizar o <a href="https://www.seleniumhq.org/projects/ide/" target="_blank">Selenium IDE</a> plug-in para Firefox. Porém poderia utilizar o próprio Coded UI Test Builder para gravar e fazer com que executasse em outro browser.</p>
<p align="justify">Após instalar o <a href="https://visualstudiogallery.msdn.microsoft.com/11cfc881-f8c9-4f96-b303-a2780156628d" target="_blank">Selenium components for Coded UI Cross Browser Testing</a>, vou criar um novo projeto do tipo Coded UI Test Project, pois minha intenção é utilizar o MSTest, porque ele já carrega algumas referências necessárias. Se a intenção for utilizar o xUnit ou NUnit, você poderia utilizar uma Class Library, inclusive utilizar NUnit pode ser mais simples para quem quer gravar os testes com Selenium, pois já pode exportar para direto da Selenium IDE para C# NUnit e executar no Visual Studio de forma simples.</p>
&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/NewProject3.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="NewProject" src="https://msdnshared.blob.core.windows.net/media/2016/05/NewProject_thumb1.png" alt="NewProject" width="480" height="335" border="0" /></a></p>
&nbsp;
<p align="justify">Assim que o projeto é criado a janela para gravar os cenários utilizando Test Builder será aberta, vou ignorar e cancelar.</p>
&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/TestBuilder.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="TestBuilder" src="https://msdnshared.blob.core.windows.net/media/2016/05/TestBuilder_thumb.png" alt="TestBuilder" width="341" height="215" border="0" /></a></p>
&nbsp;
<p align="justify">O próximo passo agora é adicionar os assemblies e drivers do Selenium no projeto de Coded UI criado utilizando o gerenciador do Nuget e adicionar suas referências a classe. Eu instalei somente os drivers do Chrome e do IE, porque o driver de Firefox já faz parte do core framework e não precisa ser instalado a parte.</p>
&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/ReferenciasSelenium.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="ReferenciasSelenium" src="https://msdnshared.blob.core.windows.net/media/2016/05/ReferenciasSelenium_thumb.png" alt="ReferenciasSelenium" width="453" height="298" border="0" /></a></p>
&nbsp;
<p align="justify">Referências:</p>

<div style="overflow: auto;width: auto;background: #ffffff;border-width: 0.1em 0.1em 0.1em 0.8em;padding: 0.2em 0.6em 0.2em 0.6em">
<pre style="margin: 0px;line-height: 125%"><span style="color: #0000ff">using</span> OpenQA.Selenium.Firefox;
<span style="color: #0000ff">using</span> OpenQA.Selenium.Chrome;
<span style="color: #0000ff">using</span> OpenQA.Selenium.IE;
<span style="color: #0000ff">using</span> OpenQA.Selenium;
</pre>
</div>
</br>
<p align="justify">Como estou utilizando a classe default criada junto com o projeto de Coded UI, ela tem um trecho de código comentado “Additional test attributes” que vou utilizar para preparar o driver que utilizarei em meus testes. O método TestInitialize será executado antes de cada método de testes. O interessante de criar o driver aqui é que ele fica centralizado em um único lugar para todos os testes dessa classe. Como vou utilizar o mesmo browser e URL para esses testes, vou colocar aqui também a chamada ao site que será testado e realizar a navegação.</p>
&nbsp;
<div style="overflow: auto;width: auto;background: #ffffff;border-width: 0.1em 0.1em 0.1em 0.8em;padding: 0.2em 0.6em 0.2em 0.6em">
<pre style="margin: 0px;line-height: 125%"><span style="color: #0000ff">#region Additional test attributes</span>

        <span style="color: #008000">// You can use the following additional attributes as you write your tests:</span>

        <span style="color: #008000">////Use TestInitialize to run code before running each test </span>
        [TestInitialize()]
        <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> MyTestInitialize()
        {
            <span style="color: #008000">// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.</span>
            driver = <span style="color: #0000ff">new</span> ChromeDriver();
            baseURL = <span style="color: #a31515"><a href="https://blogs.msdn.microsoft.com/;">https://blogs.msdn.microsoft.com/</a></span>;
            driver.Navigate().GoToUrl(baseURL);
            driver.Manage().Window.Maximize();
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
        }

        <span style="color: #008000">////Use TestCleanup to run code after each test has run</span>
        [TestCleanup()]
        <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> MyTestCleanup()
        {
            <span style="color: #008000">// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.</span>
            <span style="color: #0000ff">try</span>
            {
                driver.Quit();
            }
            <span style="color: #0000ff">catch</span> (Exception)
            {
                <span style="color: #008000">// Ignore errors if unable to close the browser</span>
            }
        }

<span style="color: #0000ff">#endregion</span>
</pre>
</div>
&nbsp;

O método TestCleanup será executado após cada teste. Nesse caso estou limpando o driver após cada execução.

Ao executar o método de teste default, recebi a seguinte mensagem de erro:

&nbsp;
<div style="overflow: auto;width: auto;background: #ffffff;border-width: 0.1em 0.1em 0.1em 0.8em;padding: 0.2em 0.6em 0.2em 0.6em">
<pre style="margin: 0px;line-height: 125%">Result Message:    Initialization method TestesAutomatizados.Selenium.TestandoComSelenium.MyTestInitialize threw exception. OpenQA.Selenium.DriverServiceNotFoundException: OpenQA.Selenium.DriverServiceNotFoundException: The chromedriver.exe file does not exist <span style="color: #0000ff">in</span> the current directory or <span style="color: #0000ff">in</span> a directory on the PATH environment variable. The driver can be downloaded at http:<span style="color: #008000">//chromedriver.storage.googleapis.com/index.html..</span>
</pre>
</div>
</br>
<p align="justify">Isso aconteceu porque os testes não estão sendo executados onde está o projeto. Para resolver, precisei “falar” para o Test Framework copiar o chromedriver.exe que foi adicionado ao projeto quando instalei a referência do Nuget, para a pasta onde os testes vão ser executados. Utilizei o atributo DeploymentItem na Test Class.</p>
</br>
<div style="overflow: auto;width: auto;background: #ffffff;border-width: 0.1em 0.1em 0.1em 0.8em;padding: 0.2em 0.6em 0.2em 0.6em">
<pre style="margin: 0px;line-height: 125%"><span style="color: #0000ff">namespace</span> TestesAutomatizados.Selenium
{
    <span style="color: #008000">/// &lt;summary&gt;</span>
    <span style="color: #008000">/// Summary description for CodedUITest1</span>
    <span style="color: #008000">/// &lt;/summary&gt;</span>
    [CodedUITest]
    [DeploymentItem("chromedriver.exe")]
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> <span style="color: #2b91af">TestandoComSelenium</span>
…
</pre>
</div>
</br>
<p align="justify">Agora é possível executar os testes! Nesse caso, por enquanto como não gravamos nenhum cenário, somente o browser será aberto no endereço padrão escrito no método MyTestInitialize. Sendo assim, vamos gravar nosso primeiro cenário!</p>
<p align="justify">Vou utilizar a Selenium IDE para gravar o cenário de Testes. Após a instalação, ao abrirmos a IDE teremos a seguinte tela:</p>
&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/SeleniumIDE.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="SeleniumIDE" src="https://msdnshared.blob.core.windows.net/media/2016/05/SeleniumIDE_thumb.png" alt="SeleniumIDE" width="441" height="341" border="0" /></a></p>
&nbsp;
<p align="justify">O objetivo do meu cenário de teste é abrir meu blog, entrar em um de meus posts e fazer um comentário. Como já programamos a execução do browser no endereço correto, vamos gravar desse ponto para frente. Após abrir o browser e entrar na aplicação, vou abrir e iniciar a gravação no Selenium IDE e executar as ações como se estivesse navegando como um usuário comum.</p>
Passos:
<ol>
	<li>Abrir website</li>
	<li>Clicar em um post</li>
	<li>Preencher informações pessoais (nome, e-mail, website)</li>
	<li>Escrever comentário</li>
	<li>Publicar comentário</li>
</ol>
Esse é o resultado da gravação no Selenium IDE:

&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/SeleniumIDEGravado.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="SeleniumIDEGravado" src="https://msdnshared.blob.core.windows.net/media/2016/05/SeleniumIDEGravado_thumb.png" alt="SeleniumIDEGravado" width="577" height="446" border="0" /></a></p>
&nbsp;
<p align="justify">Agora vamos exportar esse caso de teste. File –&gt; Export Test Case As… –&gt; C# / NUnit / WebDriver:</p>
&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/SeleniumIDEExport.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="SeleniumIDEExport" src="https://msdnshared.blob.core.windows.net/media/2016/05/SeleniumIDEExport_thumb.png" alt="SeleniumIDEExport" width="455" height="352" border="0" /></a></p>
&nbsp;
<p align="justify">Não estou utilizando NUnit, porém vou utilizar parte da classe gerada em nosso teste configurado anteriormente. Ficando somente com as chamadas dos elementos da classe exportada pelo Selenium IDE e adicionando em meu método no Coded UI, ele ficou assim:</p>

<div style="overflow: auto;width: auto;background: #ffffff;border-width: 0.1em 0.1em 0.1em 0.8em;padding: 0.2em 0.6em 0.2em 0.6em">
<pre style="margin: 0px;line-height: 125%">        [TestMethod]
        [TestCategory("UI")]
        <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> abrir_post_e_fazer_um_comentario()
        {
            driver.Navigate().GoToUrl(baseURL + <span style="color: #a31515">"/luizmacedo/"</span>);
            driver.FindElement(By.LinkText(<span style="color: #a31515">"Livro: Desenvolvimento efetivo na plataforma Microsoft"</span>)).Click();
            driver.FindElement(By.Id(<span style="color: #a31515">"author"</span>)).Clear();
            driver.FindElement(By.Id(<span style="color: #a31515">"author"</span>)).SendKeys(<span style="color: #a31515">"Luiz"</span>);
            driver.FindElement(By.Id(<span style="color: #a31515">"email"</span>)).Clear();
            driver.FindElement(By.Id(<span style="color: #a31515">"email"</span>)).SendKeys(<span style="color: #a31515">"luizmacedo@outlook.com"</span>);
            driver.FindElement(By.Id(<span style="color: #a31515">"url"</span>)).Clear();
            driver.FindElement(By.Id(<span style="color: #a31515">"url"</span>)).SendKeys(<span style="color: #a31515">"https://blogs.msdn.microsoft.com/luizmacedo"</span>);
            driver.FindElement(By.Id(<span style="color: #a31515">"comment"</span>)).Clear();
            driver.FindElement(By.Id(<span style="color: #a31515">"comment"</span>)).SendKeys(<span style="color: #a31515">"Meu primeiro comentário utilizando testes automatizados!!!"</span>);
            driver.FindElement(By.Id(<span style="color: #a31515">"submit"</span>)).Click();
        }
</pre>
</div>
</br>
<p align="justify">A criação do cenário de testes foi finalizada e a integração com Selenium está funcionando. Agora é só executar o teste e esperar o resultado. Nesse caso estou utilizando o Google Chrome, mas poderia estar executando pelo Firefox, IE ou com outros browsers que tenham o WebDriver do Selenium disponível.</p></br>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/RunTeste.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="RunTeste" src="https://msdnshared.blob.core.windows.net/media/2016/05/RunTeste_thumb.png" alt="RunTeste" width="419" height="262" border="0" /></a></p></br>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/TesteExecutado.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border-width: 0px" title="TesteExecutado" src="https://msdnshared.blob.core.windows.net/media/2016/05/TesteExecutado_thumb.png" alt="TesteExecutado" width="422" height="190" border="0" /></a></p>
&nbsp;

Teste executado com sucesso!]]></content:encoded>
    </item>
    <item>
      <title>Livro: Desenvolvimento efetivo na plataforma Microsoft</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/livro-desenvolvimento-efetivo-na-plataforma-microsoft</link>
      <pubDate>Fri, 06 May 2016 21:16:30 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/?p=465</guid>
      <description><![CDATA[Poucos sabem dessa iniciativa, mas é com grande emoção e satisfação que hoje lanço em conjunto com...]]></description>
      <content:encoded><![CDATA[Poucos sabem dessa iniciativa, mas é com grande emoção e satisfação que hoje lanço em conjunto com meu time, nosso primeiro livro técnico. Esse livro foi fruto de um trabalho em um time altamente capacitado de engenheiros da Microsoft Brasil. Esse livro é um marco para nosso time, com uma união incrível, e de extremo orgulho para todos. Como sempre dizemos, tenho ORGULHO de fazer parte desse time!!! Muito obrigado a todos pelo excelente trabalho! Foi um prazer dar vida a ele:

&nbsp;
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/O88xLPJUi5p4RfPTs3gqB6CdU2-F7du4E2Xku88E6As_size_mode_3_size_1280x960_large.jpg"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" title="O88xLPJUi5p4RfPTs3gqB6CdU2-F7du4E2Xku88E6As_size_mode_3_size_1280x960_large" src="https://msdnshared.blob.core.windows.net/media/2016/05/O88xLPJUi5p4RfPTs3gqB6CdU2-F7du4E2Xku88E6As_size_mode_3_size_1280x960_large_thumb.jpg" alt="O88xLPJUi5p4RfPTs3gqB6CdU2-F7du4E2Xku88E6As_size_mode_3_size_1280x960_large" width="307" height="432" border="0" /></a></p>
Distribuição: <a title="https://www.casadocodigo.com.br/pages/sumario-plataforma-microsoft" href="https://www.casadocodigo.com.br/pages/sumario-plataforma-microsoft">https://www.casadocodigo.com.br/pages/sumario-plataforma-microsoft</a>

<a title="Compartilhe no Facebook" href="https://www.facebook.com/sharer/sharer.php?u=https://www.casadocodigo.com.br/products/livro-plataforma-microsoft" target="_blank">Compartilhe no Facebook</a>

<a title="Compartilhe no Twitter" href="https://twitter.com/home?status=Plataforma Microsoft na @casadocodigo https://www.casadocodigo.com.br/products/livro-plataforma-microsoft" target="_blank">Compartilhe no Twitter</a>

&nbsp;

<del>A versão impressa será disponibilizada no site daqui alguns dias!</del>

<strong>Update:</strong> A versão impressa já está disponível para compra! Compre o combo (Impresso + E-book) e ganhe um desconto SENSACIONAL!

Todo valor arrecadado com as vendas do livro serão revertidas para instituições de caridade.]]></content:encoded>
    </item>
    <item>
      <title>Criando um Docker Host Linux no Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/criando-um-docker-host-linux-no-azure</link>
      <pubDate>Thu, 21 Apr 2016 17:18:40 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/2016/04/21/criando-um-docker-host-linux-no-azure/</guid>
      <description><![CDATA[Referência: https://docs.docker.com/v1.9/engine/installation/azure
O que é o Docker?...]]></description>
      <content:encoded><![CDATA[<p align="justify">Referência: <a href="https://docs.docker.com/v1.9/engine/installation/azure" target="_blank">https://docs.docker.com/v1.9/engine/installation/azure</a></p>
<p align="justify">O que é o Docker? <a title="https://www.docker.com/what-docker" href="https://www.docker.com/what-docker" target="_blank">https://www.docker.com/what-docker</a></p>
<p align="justify">Existem diferentes formas de criar um Docker Host, vou demonstrar uma delas nesse post.</p>
<p align="justify">O primeiro passo será criar uma nova máquina virtual com Linux no Azure que suporte a extensão Docker VM. Nesse caso irei utilizar uma imagem da galeria do Azure para facilitar o trabalho, Ubuntu Server 15.10.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3173.UbuntuVM_5B6BCAD4.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="UbuntuVM" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/8322.UbuntuVM_thumb_2FBD9189.png" alt="UbuntuVM" width="449" height="191" border="0" /></a></p>
<p align="justify">Em determinado passo no processo de configuração para criar a nova máquina virtual, será possível incluir extensões. Vamos incluir a Docker Extension.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/5657.DockerExtension_2A6EAAD8.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="DockerExtension" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/4477.DockerExtension_thumb_4E969618.png" alt="DockerExtension" width="450" height="177" border="0" /></a></p>
<p align="justify">Para que seja possível criar a VM com a extensão do Docker, no momento de instalação da extensão é necessário realizar o upload de três certificados para o Docker Engine e configurar a porta de conexão.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/2248.DockerExtensionCert_65586E52.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="DockerExtensionCert" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/4786.DockerExtensionCert_thumb_198C9799.png" alt="DockerExtensionCert" width="253" height="370" border="0" /></a></p>
<p align="justify">Para a criação dos certificados serão seguidas as seguintes recomendações: <a href="https://docs.docker.com/engine/security/https" target="_blank">https://docs.docker.com/engine/security/https</a>.</p>
<p align="justify">Utilizei uma outra máquina Linux que tenho para a criação dos certificados. Também é possível instalar a VM sem essa extensão e realizar o processo de instalação manual após a criação da VM, mas preferi facilitar o processo e ter a VM com ela instalada desde o início.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/5074.CertCreateLinux_220FF6E3.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="CertCreateLinux" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/8510.CertCreateLinux_thumb_3FF10B95.png" alt="CertCreateLinux" width="455" height="231" border="0" /></a></p>
<p align="justify">Após a criação, devemos selecionar os certificados criados.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3250.DockerExtensionCertSelected_5646B0DA.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="DockerExtensionCertSelected" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/7357.DockerExtensionCertSelected_thumb_3148F061.png" alt="DockerExtensionCertSelected" width="226" height="374" border="0" /></a></p>
<p align="justify">Por fim, falta validar as configurações e finalizar a criação da VM.</p>
<p align="justify">Quando a VM estiver criada, vamos configurar um DNS name label para encontrar a máquina de forma mais fácil e eficiente. Basta clicar nas configurações de Public IP –&gt; Settings –&gt; Configuration –&gt; DNS name label.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/8037.DNSName_480AC89B.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="DNSName" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/8461.DNSName_thumb_5C23E524.png" alt="DNSName" width="231" height="283" border="0" /></a></p>
<p align="justify">Na criação dos certificados esse DNS pode ser utilizado na configuração de CN.
Ex.: openssl req -subj "/CN=host.southcentralus.cloudapp.azure.com" -new -key server-key.pem -out server.csr</p>
<p align="justify">O próximo passo é criar um novo endpoint para que seja possível encontrar o Docker Host criado no Azure. Clique no Network Security Group da VM criada –&gt; Settings –&gt; Inbound security rules –&gt; add.</p>
<p align="justify">Criei o endpoint TCP para a porta 2376, default do Docker.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3124.DockerEndpoint_4081E9DF.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="DockerEndpoint" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3010.DockerEndpoint_thumb_1B842966.png" alt="DockerEndpoint" width="185" height="358" border="0" /></a></p>
<p align="justify">Por fim, basta testar se a conexão com o Docker Host está funcionando, utilizando o comando a seguir pela máquina cliente:</p>
<p align="justify">Ex.: $ docker --tls --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://host.southcentralus.cloudapp.azure.com:2376 info</p>
<p align="justify">Para validar a versão:</p>
<p align="justify">Ex.: docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=host.southcentralus.cloudapp.azure.com:2376 version</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/6574.HostResult_4B41D1E5.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="HostResult" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/2043.HostResult_thumb_3F3FE1B1.png" alt="HostResult" width="405" height="258" border="0" /></a></p>
<p align="justify">São apresentadas as informações do Docker Host pronto para ser utilizado.</p>]]></content:encoded>
    </item>
    <item>
      <title>Interactive Mode no Build Agent vNext</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/interactive-mode-no-build-agent-vnext</link>
      <pubDate>Sun, 10 Apr 2016 15:58:04 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/2016/04/10/interactive-mode-no-build-agent-vnext/</guid>
      <description><![CDATA[Ao instalar o novo modelo de Builds do VSTS ou TFS 2015, é possível instala-lo como serviço no...]]></description>
      <content:encoded><![CDATA[<p align="justify">Ao instalar o novo modelo de Builds do VSTS ou TFS 2015, é possível instala-lo como serviço no Windows. Para quem não configurou essa opção e gostaria que o Build sempre fosse iniciado assim que o Windows iniciasse de forma interativa, seguem as opções:</p>

<ol>
	<li>
<div align="justify">Entre nas configurações de contas de usuário do Windows e desative a opção “Users must enter a user name and password to use this computer”<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/6835.UserAccounts_39AB7927.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="UserAccounts" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/2146.UserAccounts_thumb_1B60C231.png" alt="UserAccounts" width="323" height="358" border="0" /></a>

</div></li>
	<li>
<div align="justify">Preencha o usuário e senha que será utilizado para efetuar login automaticamente clique em ok.</div></li>
	<li>
<div align="justify">Agora vamos criar um atalho para iniciar automaticamente nosso build agent no Startup do Windows:</div>
<ul>
	<li>
<div align="justify">Windows + R</div></li>
	<li>
<div align="justify">Digite Shell: Startup e aperte Enter</div></li>
	<li>
<div align="justify">Crie um novo atalho (botão direito na pasta –&gt; novo –&gt; atalho) com o caminho onde estão seus arquivos do Agent</div>
<ul>
	<li>
<div align="justify">Ex.: C:\Windows\System32\cmd.exe /c c:\agent1\agent\vsoagent.exe</div></li>
</ul>
</li>
</ul>
</li>
	<li>
<div align="justify">Pronto. Ao abrir esse atalho o Agent será executado em modo interativo. Mantenha-o executando e verifique seu status no portal do VSTS/TFS.</div></li>
</ol>
<blockquote>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/4331.AgentCriado_362CE83D.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border: 0px" title="AgentCriado" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/5722.AgentCriado_thumb_1AF71FED.png" alt="AgentCriado" width="431" height="141" border="0" /></a></p>
</blockquote>
<p align="justify"><strong>Obs.:</strong> Gostaria de lembrar que essas configurações vão permitir que o Windows faça login automaticamente com esse usuário, sendo assim essas configurações devem ser utilizadas com cuidado.</p>]]></content:encoded>
    </item>
    <item>
      <title>Instalando Build Agents em um servidor de Build</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/instalando-build-agents-em-um-servidor-de-build</link>
      <pubDate>Sun, 10 Apr 2016 15:20:21 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/2016/04/10/instalando-build-agents-em-um-servidor-de-build/</guid>
      <description><![CDATA[Para quem já trabalha com o TFS a algum tempo, sabe como dava certo trabalho para instalar uma...]]></description>
      <content:encoded><![CDATA[<p align="justify">Para quem já trabalha com o TFS a algum tempo, sabe como dava certo trabalho para instalar uma topologia de TFS com Builds Agents e Build Controller, entender como funcionavam, escolher uma Collection por Controller, etc. No entanto agora para o VSTS/TFS 2015 não será mais necessária a instalação de um controller, somente dos Build Agents, pois o próprio VSTS/TFS 2015 fazem a orquestração dos Agents (não estamos falando de XAML build aqui, ok?).</p>  <ol>   <li>     <div align="justify">Abra o endereço de seu VSTS/TFS. Ex.: https://url.visualstudio.com/DefaultCollection/TeamProject </div>   </li>    <li>     <div align="justify">Clique na engrenagem no canto superior direito para abrir a área de administração        <br />        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3755.Engrenagem_44082275.png"><img title="Engrenagem" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="Engrenagem" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/6371.Engrenagem_thumb_45D8783C.png" width="194" height="29" /></a>         <br /></div>   </li>    <li>     <div align="justify">Selecione o Control Panel </div>   </li>    <li>     <div align="justify">Clique na aba Agent pools </div>   </li>    <li>     <div align="justify">Clique no link Download agent        <br />        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/8461.DownloadAgent_1A27AE40.png"><img title="DownloadAgent" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="DownloadAgent" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/6646.DownloadAgent_thumb_6A6C9671.png" width="345" height="172" /></a>         <br /></div>   </li>    <li>     <div align="justify">Salve o arquivo em uma pasta de sua preferencia </div>   </li>    <li>     <div align="justify">Clique com o botão direito no arquivo agent.zip </div>   </li>    <li>     <div align="justify">Selecione as propriedades do arquivo </div>   </li>    <li>     <div align="justify">Verifique se o arquivo está desbloqueado        <br />        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3124.UnblockAgentZip_70B36CFF.png"><img title="UnblockAgentZip" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="UnblockAgentZip" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/7271.UnblockAgentZip_thumb_2DD72885.png" width="444" height="252" /></a>         <br /></div>   </li>    <li>     <div align="justify">Extraia o arquivo para a pasta onde ele será instalado e configurado </div>   </li>    <li>     <div align="justify">Eu continuo instalando um agent por Core, por isso vou nomear a pasta como Agent1 </div>   </li>    <li>     <div align="justify">Execute o arquivo ConfigureAgent.cmd com privilégios elevados        <br />        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/5148.IniciandoConfigureAgent_04CF1A3A.png"><img title="IniciandoConfigureAgent" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="IniciandoConfigureAgent" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/4024.IniciandoConfigureAgent_thumb_78CD2A05.png" width="448" height="278" /></a>         <br /></div>   </li>    <li>     <div align="justify">Preencha as informações requeridas ou se for o caso aperte “enter” para as opções default apresentadas: </div>      <ul>       <li>         <div align="justify">Nome do Agent </div>       </li>        <li>         <div align="justify">URL do VSTS/TFS. Ex.: https://url.visualstudio.com/DefaultCollection </div>       </li>        <li>         <div align="justify">Preencha o Agent Pool do Agent </div>       </li>        <li>         <div align="justify">Preencha a work folder do Agent </div>       </li>        <li>         <div align="justify">Preencha Y/N para instalar o Agent como serviço ou não. </div>       </li>        <li>         <div align="justify">Caso escolha executar como serviço, preencha também o nome do usuário com que será executado </div>       </li>        <li>         <div align="justify">Uma janela para inserir o usuário e senha será apresentada.            <br />            <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/0880.ConfigureAgent_21D7C902.png"><img title="ConfigureAgent" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="ConfigureAgent" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/1307.ConfigureAgent_thumb_7626FF05.png" width="417" height="100" /></a> </div>       </li>     </ul>   </li>    <li>     <div align="justify">Após isso o agent está configurado e irá exibir as mensagens abaixo:        <br />        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/3225.FinalConfigureAgent_7F169144.png"><img title="FinalConfigureAgent" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="FinalConfigureAgent" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/6038.FinalConfigureAgent_thumb_0F255FFC.png" width="418" height="99" /></a>         <br /></div>   </li>    <li>     <div align="justify">Verifique no portal se seu novo Build Agent está instalado e funcionando        <br />        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/5700.AgentCriado_2A5DB8FD.png"><img title="AgentCriado" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="AgentCriado" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/metablogapi/8561.AgentCriado_thumb_5E91E243.png" width="503" height="164" /></a> </div>   </li> </ol>  <p align="justify">Por hoje é isso! Até a próxima!</p>]]></content:encoded>
    </item>
    <item>
      <title>Repositório de experiencias, soluções e algo mais!</title>
      <link>https://docs.microsoft.com/archive/blogs/luizmacedo/repositrio-de-experiencias-solues-e-algo-mais</link>
      <pubDate>Tue, 13 Jan 2015 06:36:00 GMT</pubDate>
      <dc:creator><![CDATA[Luiz Macedo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/luizmacedo/2015/01/13/repositrio-de-experiencias-solues-e-algo-mais/</guid>
      <description><![CDATA[Acredito que uma das maiores fontes de informação que tive durante minha experiencia profissional,...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify">Acredito que uma das maiores fontes de informação que tive durante minha experiencia profissional, foram os Blogs.</p> <p style="text-align: justify">Sempre que precisamos de alguma informação, vamos em nosso buscador preferido (<span class="pba_ort_error">Bing</span>) e pesquisamos o que está tirando o sono para resolver aquele problema de um cliente ou até mesmo para matar a curiosidade de algo aleatório. Muitas das respostas que procuramos conseguimos encontrar em Blogs. Penso que muito disso é porque a experiencia, vivência e os problemas encontrados e <span style="text-decoration: line-through">nem sempre</span> resolvidos pelas pessoas que escrevem, podem ser de maior proveito que um roteiro passo a passo que pode não se encaixar a sua realidade. Porém obviamente não deixando de lado documentações de produtos e referências técnicas que sempre vão se encaixar em qualquer situação.</p> <p style="text-align: justify">Por isso estamos aqui. Minha intenção é falar um pouco sobre um ou outro problema que tenho encontrado durante minhas idas e vindas por diferentes clientes e situações cotidianas referentes as tecnologias que trabalho.</p> <p style="text-align: justify">Sou Premier <span class="pba_ort_error">Field</span> <span class="pba_ort_error">Engineer</span> de <span class="pba_ort_error">ALM</span> (<span class="pba_ort_error">Application</span> <span class="pba_ort_error">Lifecycle</span> <span class="pba_ort_error">Management</span>) na <span class="pba_ort_error">Microsoft</span> e atualmente moro no Rio de Janeiro. Trabalho em diferentes e grandes clientes com as mais variadas situações e problemas. Ajudo-os com as melhores práticas de <span class="pba_ort_error">ALM</span> utilizando <span class="pba_ort_error">TFS</span> e outras ferramentas e plataformas <span class="pba_ort_error">Microsoft</span> para atender as necessidades de negócio de cada um.</p> <p style="text-align: justify">Aqui temos um exemplo de uma parte dos assuntos que quero abordar:</p> <p style="text-align: justify">&nbsp;</p> <p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/4848.TFS.png"><img style="float: none;margin-left: auto;margin-right: auto" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/67/19/4848.TFS.png" width="799" height="354"></a></p> <p style="text-align: justify">&nbsp;</p> <p style="text-align: justify">Espero que encontre aqui a resposta ou o caminho de uma, para que durma melhor após resolver o problema que não encontrou resposta no primeiro <em><span class="pba_gram_error"><a title="Resposta n&atilde;o encontrada" href="https://www.bing.com/search?q=resposta+n%C3%A3o+encontrada&amp;go=Submit&amp;qs=n&amp;form=QBLH&amp;pq=resposta+n%C3%A3o+encontrada&amp;sc=0-0&amp;sp=-1&amp;sk=&amp;cvid=080ab63643ac4140992eb5764e045750" target="_blank">link</a></span></em> de busca.</p> <p style="text-align: justify">Um abraço e até logo!</p>]]></content:encoded>
    </item>
  </channel>
</rss>