<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ricardo Serradas &#187; Problema e Solução</title>
	<atom:link href="http://blog.ricardoserradas.net/category/problema-e-solucao/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ricardoserradas.net</link>
	<description>Visual Studio ALM in a nutshell</description>
	<lastBuildDate>Tue, 24 Aug 2010 20:36:46 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.ricardoserradas.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/2067b2b562b3daa8ea3e3bee2e7fc613?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Ricardo Serradas &#187; Problema e Solução</title>
		<link>http://blog.ricardoserradas.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.ricardoserradas.net/osd.xml" title="Ricardo Serradas" />
	<atom:link rel='hub' href='http://blog.ricardoserradas.net/?pushpress=hub'/>
		<item>
		<title>Quest: Customizar Work Items, integração com MS Project e relatórios – Parte 2</title>
		<link>http://blog.ricardoserradas.net/2010/08/24/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-2/</link>
		<comments>http://blog.ricardoserradas.net/2010/08/24/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-2/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 20:36:46 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[ALM]]></category>
		<category><![CDATA[Customização]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[Work Items]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=244</guid>
		<description><![CDATA[Fala galera, No post anterior, falamos de uma customização de work items usando os recursos do próprio Visual Studio somados aos do Team Foundation Server Power Tools. O que faremos seguindo esse guia é ir além, codificando nosso próprio controle para um formulário de work item. Vamos relembrar o problema que vamos resolver: precisamos de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=244&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Fala galera,</p>
<p>No post anterior, falamos de uma customização de work items usando os recursos do próprio Visual Studio somados aos do <em>Team Foundation Server Power Tools</em>. O que faremos seguindo esse guia é ir além, codificando nosso próprio controle para um formulário de work item.</p>
<p>Vamos relembrar o problema que vamos resolver: precisamos de um campo que vai exibir o andamento geral da atividade, baseado no andamento das 3 etapas, consolidando-as. Para mais detalhes, você pode ler mais sobre o problema proposto na <a href="http://blog.ricardoserradas.net/2010/08/19/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-1/">Parte 1</a>.</p>
<p>Para acompanhar, todo o código conte e XML de definição do Work Item &#8220;<em>Task</em>&#8221; está disponível para download <a href="http://ricardoserradas.net/SamplesRepository/TfsWorkItemCustomControlSample.zip" target="_blank">neste link</a>.</p>
<h3>Como funciona o deploy de novos controles para Work Items?</h3>
<p>Diferentemente do que muitos me supõe, os assemblies de controles customizados para work items não ficam dispostos no servidor do TFS, mas sim em uma pasta específica em cada máquina cliente. Essa pasta é:</p>
<p>[Drive]:\programdata\Microsoft\Team Foundation\Work Item Tracking\Custom Controls\10.0</p>
<p>Por conta disso, precisamos escolher uma forma para distribuir nosso assembly do controle. Isso fica a seu critério. Você pode disponibilizá-la para cópia num compartilhamento na rede, distribuir via pendrive, SkyDrive, etc&#8230; Eu escolhi criar um setup que já faz a cópia da DLL para o diretório correto, e aí sim compartilhei este na rede, porém, não vamos entrar nesse mérito.</p>
<p>Vale lembrar que depois do deploy da DLL feito nessa pasta, é necessário reiniciar o Visual Studio para que ele faça sua leitura.</p>
<h3>Vamos ao que interessa</h3>
<p>Para criarmos nosso controle, criamos um Class Library simples dentro do nosso Visual Studio. Vamos chamá-lo de <em>CustomWorkItemFields</em>. Chamei assim porque, dentro desse mesmo assembly, podemos criar outros novos controles.</p>
<p>Dentro dele, adicionamos um User Control, que vou chamar de “<em>PercentComplete</em>”. Adicionamos então um TextBox simples, o qual vamos chamar de “txtValue”. O último passo dessa parte visual é ajustar o form para que ele fique do mesmo tamanho que nosso TextBox, assim:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/customcontrollayout.jpg"><img class="aligncenter size-full wp-image-245" title="CustomControlLayout" src="http://ricardoserradas.files.wordpress.com/2010/08/customcontrollayout.jpg?w=507&#038;h=239" alt="" width="507" height="239" /></a></p>
<p>Agora, precisamos implementar a inteligência desse controle. Para isso, vamos ao código.</p>
<p>Antes de tudo, precisamos adicionar duas referências ao nosso projeto, que são:</p>
<ul>
<li><em>Microsoft.TeamFoundation.WorkItemTracking.Client</em>, parte do<em> Team Foundation Server SDK</em></li>
<li><em>Microsoft.TeamFoundation.WorkItemTracking.Controls</em>, localizado no diretório:</li>
</ul>
<p>[Drive]:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies</p>
<p>Feito isso:</p>
<p>-          Faça as referências a esses namespaces no codebehind do controle;</p>
<p>-          Implemente a interface <em>IWorkItemControl</em>;</p>
<p>-          (Opcional, como implementei) crie um struct para organizar os nomes dos campos de work items com os quais vamos trabalhar os cálculos;</p>
<p>-          Crie o método <em>SetPercenteCompleteField()</em> para concentrar a inteligência de cálculo.</p>
<p>O segredo todo desta customização está no evento <em>FieldChanged</em> do WorkItem, porque a cada vez que um campo for modificado e este for um dos 3 novos campos que adicionamos ao formulário, temos que realizar o cálculo e exibir o resultado no nosso controle customizado. Veja como ficou o núcleo da nossa customização, o método “<em>SetPercentCompleteField</em>”:</p>
<pre>private void SetPercentCompleteField()
{</pre>
<pre style="padding-left:30px;">try</pre>
<pre style="padding-left:30px;">{</pre>
<pre style="padding-left:60px;"><span style="color:#339966;">// Obtém todos os valores que estão informados nos nossos campos de acompanhamento</span></pre>
<pre style="padding-left:60px;">var analysis = int.Parse(_workItemDataSource.Fields[WorkItemFields.Analysis].Value.ToString().Replace("%", string.Empty));</pre>
<pre style="padding-left:60px;">var development = int.Parse(_workItemDataSource.Fields[WorkItemFields.Development].Value.ToString().Replace("%", string.Empty));</pre>
<pre style="padding-left:60px;">var tests = int.Parse(_workItemDataSource.Fields[WorkItemFields.Tests].Value.ToString().Replace("%", string.Empty));</pre>
<pre style="padding-left:60px;"><span style="color:#339966;">// Aplica os pesos a cada um dos valores e depois obtém porcentagem</span></pre>
<pre style="padding-left:60px;">var result = analysis*40;</pre>
<pre style="padding-left:60px;">result += development*30;</pre>
<pre style="padding-left:60px;">result += tests*30;</pre>
<pre style="padding-left:60px;">result = result/100;</pre>
<pre style="padding-left:60px;"><span style="color:#339966;">// Atribui o resultado ao nosso campo de work item para armazenamento na base de dados</span></pre>
<pre style="padding-left:60px;">_workItemDataSource.Fields[WorkItemFields.PercentComplete].Value = result;</pre>
<pre style="padding-left:60px;"><span style="color:#339966;">// Atribui esse resultado, formatado com o caractér '%', no campo do controle</span></pre>
<pre style="padding-left:60px;">txtValue.Text = result + "%";</pre>
<pre style="padding-left:30px;">}</pre>
<pre style="padding-left:30px;">catch (Exception)</pre>
<pre style="padding-left:30px;">{</pre>
<pre style="padding-left:60px;">if (_workItemDataSource == null) return;</pre>
<pre style="padding-left:60px;">_workItemDataSource.Fields[WorkItemFields.PercentComplete].Value = 0;</pre>
<pre style="padding-left:60px;">txtValue.Text = "0%";</pre>
<pre style="padding-left:30px;">}
}</pre>
<p>Depois do controle codificado, precisamos agora criar um arquivo de definição do controle de work item, que será colocado na mesma pasta de deploy que informei acima. Veja o seu formato:</p>
<pre>&lt;?xml version="1.0"?&gt;
&lt;CustomControl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
&lt;Assembly&gt;<strong>ALMTeam.BlogSampleCMMi.CustomWorkItemFields.dll</strong>&lt;/Assembly&gt;
&lt;FullClassName&gt;<strong>ALMTeam.BlogSampleCMMi.CustomWorkItemFields.PercentComplete</strong>&lt;/FullClassName&gt;
&lt;/CustomControl&gt;</pre>
<p>Formato simples, não? Dentro da tag “Assembly”, informamos qual o nome da DLL onde está localizado nosso controle e, em “FullClassName” o nome completo, incluindo namespace, da classe que o define.</p>
<p>Por último, abrimos o Work Item Type &#8220;<em>Task</em>&#8221; e criamos o campo <em>BlogSampleCMMi.Tracking.PercentComplete (Integer)</em> para armazenar os dados que nosso controle vai exibir.</p>
<p>Feito isso, fazemos o deploy dos dois arquivos na nossa referida pasta e depois reiniciamos o Visual Studio. A partir de então, um novo tipo de controle ficará disponível para inserirmos no layout do work item. É com ele que vamos criar o campo percent complete no formulário, assim como criamos os outros 3 campos, com a seguinte diferença:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type-custom-control-creation.jpg"><img class="aligncenter size-full wp-image-248" title="Work Item Type - Custom Control Creation" src="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type-custom-control-creation.jpg?w=628&#038;h=366" alt="" width="628" height="366" /></a></p>
<p>Veja que em “<em>Type</em>”, temos nosso tipo de controle customizado disponível. Não podemos nos esquecer, porém, que devemos também referenciar nosso campo de work item (criado na aba “<em>Fields</em>”) na propriedade “Field Name”.</p>
<p>Depois de criado o controle, salve o seu work item type e veja o resultado criando um novo work item do tipo “<em>Task</em>”:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/work-item-task-with-fields.jpg"><img class="aligncenter size-full wp-image-249" title="Work Item Task - With Fields" src="http://ricardoserradas.files.wordpress.com/2010/08/work-item-task-with-fields.jpg?w=604&#038;h=151" alt="" width="604" height="151" /></a></p>
<p>Perceba que cada vez que um desses 3 campos tem seu valor alterado, o cálculo no campo “Andamento Geral” acontece automaticamente.</p>
<p><strong>Importante</strong>: a implementação de um controle customizado para formulários de work items na web (Team Foundation Web Access) é diferente. Logo, verá que esse controle não é visível nos formulários web. Este assunto será abordado num outro post. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>É isso galera! No próximo episódio dessa “saga”, veremos como integrar tudo isso à um cronograma do Project.</p>
<p>[]’s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=244&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2010/08/24/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/customcontrollayout.jpg" medium="image">
			<media:title type="html">CustomControlLayout</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type-custom-control-creation.jpg" medium="image">
			<media:title type="html">Work Item Type - Custom Control Creation</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/work-item-task-with-fields.jpg" medium="image">
			<media:title type="html">Work Item Task - With Fields</media:title>
		</media:content>
	</item>
		<item>
		<title>Quest: Customizar Work Items, integração com MS Project e relatórios – Parte 1</title>
		<link>http://blog.ricardoserradas.net/2010/08/19/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-1/</link>
		<comments>http://blog.ricardoserradas.net/2010/08/19/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-1/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 20:36:31 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[ALM]]></category>
		<category><![CDATA[Customização]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[Work Items]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=230</guid>
		<description><![CDATA[Olá, Há alguns dias atrás passei por uma série de situações curiosas, com algumas diferentes customizações de um template de processo MSF for CMMi 5.0 do TFS para um time de desenvolvimento, situações essas que são relativamente simples, mas achei que caberiam bem em alguns posts sobre como realizar cada etapa. Minha proposta então é [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=230&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Há alguns dias atrás passei por uma série de situações curiosas, com algumas diferentes customizações de um template de processo MSF for CMMi 5.0 do TFS para um time de desenvolvimento, situações essas que são relativamente simples, mas achei que caberiam bem em alguns posts sobre como realizar cada etapa. Minha proposta então é expor o problema e depois, numa série de posts, mostrar como é possível implementar tudo isso. Vamos lá.</p>
<p>- Há a necessidade de customizar o template do work item do tipo <em>Task</em>, com 3 campos que compunham o andamento de cada etapa da atividade. Algo parecido com o seguinte:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Tarefa  1</td>
<td width="262" valign="top"> </td>
</tr>
<tr>
<td width="320" valign="top">Análise e documentação (peso: 40%):</td>
<td width="262" valign="top">[Dropdown com os valores possíveis]</td>
</tr>
<tr>
<td width="320" valign="top">Desenvolvimento (peso: 30%):</td>
<td width="262" valign="top">[Dropdown com os valores possíveis]</td>
</tr>
<tr>
<td width="320" valign="top">Testes (peso: 30%):</td>
<td width="262" valign="top">[Dropdown com os valores possíveis]</td>
</tr>
</tbody>
</table>
<p> Então, os campos “<em>Original estimate</em>”, “<em>Remaining work</em>” e “<em>Completed work</em>” seriam inutilizados a pedido da própria gestão.</p>
<p>- O próximo passo é criar um campo abaixo que mostrasse o andamento geral da atividade, uma porcentagem consolidada, levando em consideração os pesos de cada etapa. Exemplo, se:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="291" valign="top">Análise e documentação:</td>
<td width="291" valign="top">
<p style="text-align:center;">100%</p>
</td>
</tr>
<tr>
<td width="291" valign="top">Desenvolvimento:</td>
<td width="291" valign="top">
<p style="text-align:center;">50%</p>
</td>
</tr>
<tr>
<td width="291" valign="top">Testes:</td>
<td width="291" valign="top">
<p style="text-align:center;">0%</p>
</td>
</tr>
</tbody>
</table>
<p> Logo, o andamento geral da atividade é 55%, porque ((100*40)+(50*30)+(0*30))/100 = 55, certo?</p>
<p>Porém, como fazer isso apenas com as regras de campos de work items do TFS? Bingo! Não é possível. Para conseguirmos isso, precisamos criar um controle customizado para nossos work items com essa inteligência embutida.</p>
<p>- Depois disso, sabemos que esses work items serão mapeados para um cronograma no MS Project. A necessidade do gestor é que esse campo com o andamento geral da atividade fosse refletido no campo “<em>% Complete</em>” do cronograma.</p>
<p>- Por fim, é interessante conseguirmos elaborar relatórios a partir desses novos dados. Vamos então criar um novo tipo de Report e publicá-lo na área de relatórios do Team Project.</p>
<p>Vamos resolver esses “puzzles”?</p>
<h3>Parte 1: Criar campos customizados para o formulário de work item</h3>
<p>Antes de tudo, precisamos ter um um Team Project configurado com MSF for CMMi 5.0 para podermos trabalhar. Recomendo fortemente que crie um Team Project exclusivo para exercícios como esse.</p>
<p>Existem duas formas para customizar um tipo de work item: editando suas definições via XML ou usando o <em>Process Editor</em> integrado no Visual Studio, módulo contido no Team Foundation Power Tools, que pode ser obtido <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da">neste link</a>. Mesmo que queira mexer direto no XML, é muito importante baixar e instalar essa ferramenta para que possa ter fácil acesso ao XML definition do work item.</p>
<p>Depois de instalado, vamos primeiro dar uma olhada no XML definition do Work Item do tipo <em>Task</em>. Para isso, dentro do Visual Studio, siga os passos:</p>
<p><em>Menu Tools -&gt; Process Editor -&gt; Work Item Types -&gt; Export WIT.</em></p>
<p>Uma janela como essa sera aberta:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/select-work-item-type.jpg"><img class="size-full wp-image-232 alignnone" title="Select Work Item Type" src="http://ricardoserradas.files.wordpress.com/2010/08/select-work-item-type.jpg?w=325&#038;h=387" alt="" width="325" height="387" /></a></p>
<p>Selecione o tipo “<em>Task</em>” do seu <em>Team Project</em> e clique em OK. Agora, você verá uma caixa de diálogo de “Salvar como”, pedindo para escolher o local para salvar o arquivo XML.</p>
<p>Depois de salvo, abra este arquivo com seu editor de textos preferido. Verás um arquivo de cerca de 550 linhas. Vamos falar rapidamente sobre algumas tags importantes desse arquivo:</p>
<p>WORKITEMTYPE – Raiz do tipo do work item. É onde, por exemplo, o nome do tipo do work item é definido.</p>
<p>FIELDS – Aqui são definidos os campos usados no formulário do work item. Aqui algumas propriedades são definidas, como nome do campo, tipo de dado e formato no relatório.</p>
<p>WORKFLOW – Neste trecho é definido o ciclo de vida do tipo de work item. Transições entre estados, campos a serem preenchidos nelas, entre outras coisas são definidos aqui.</p>
<p>FORM – Aqui é definida a aparência do formulário do work item. Posições de campos, tamanho, label, agrupamento, etc.</p>
<p>Mas, há uma frase que acho muito valiosa que Ramon Durães costuma usar, que é “Não tem que ser difícil”. Seguindo essa linha, nós vamos basear nosso trabalho em cima do Process Editor do TF Power Tools.</p>
<p>Vamos então abrir o mesmo arquivo XML numa interface amigável dentro do Visual Studio. Para isso, siga esse caminho: <em>Menu Tools -&gt; Process Editor -&gt; Work Item Types -&gt; Open Work Items From File</em>. Uma janela de abertura de arquivo vai aparecer, selecione o arquivo XML que visualizávamos no editor de texto. Verás então uma janela como essa:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type.jpg"><img class="aligncenter size-full wp-image-233" title="Work Item Type" src="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type.jpg?w=700&#038;h=459" alt="" width="700" height="459" /></a></p>
<p>As abas representam os nós daquele XML que falamos acima. Para executarmos a nossa primeira tarefa, precisamos seguir o seguinte roteiro nessa janela:</p>
<p>- Etapa 1: Criar a definição dos campos na aba “<em>Fields</em>” (seus nomes, tipos e descrição).</p>
<p>                Usando o botão “<em>New</em>”, a seguinte janela aparecerá:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/field-definition.jpg"><img class="aligncenter size-full wp-image-234" title="Field Definition" src="http://ricardoserradas.files.wordpress.com/2010/08/field-definition.jpg?w=609&#038;h=375" alt="" width="609" height="375" /></a></p>
<p>Entendendo esse formulário:</p>
<p>Aba “<em>Field Definition</em>”</p>
<p><em>Name</em> – Simplesmente o nome do campo, não interfere no funcionamento.</p>
<p><em>Type</em> – Como o nome já diz, o tipo de dado que o campo vai suportar.</p>
<p><em>Reference Name</em> – É através desse nome que ele será usado tanto no formulário quanto nos relatórios. Tem como padrão ter um nome semelhante ao namespace+nome de uma classe. No nosso exemplo usamos “<em>BlogSamplesCMMi.Tracking.Analisys</em>”.</p>
<p><em>Help Text</em> – Texto que serve para tooltips, descriptions, etc.</p>
<p><em>Reportable</em> – Se você pretende usar a informação desse campo em relatórios, é importante escolher um dos valores para esse campo. Os valores podem ser:</p>
<p>                <em><span style="text-decoration:underline;">None</span></em>: Não será inserido no banco de dados relacional (não poderá ser usado em relatórios);</p>
<p>                <em><span style="text-decoration:underline;">Dimension</span></em>: Use este tipo apenas para <em>Integer</em>, <em>Double</em>, <em>String</em> ou <em>DateTime</em>. Os dados nesse campo entram no banco de dados relacional e no cubo como um atributo de dimensão do Work Item para que os dados sejam usados para filtrar relatórios. Use-o para campos que têm uma lista de valores válidos. <em>Work Item Type</em> e <em>State</em> são bons exemplos de uso desta opção.</p>
<p>                <em><span style="text-decoration:underline;">Detail</span></em>: Use esse tipo somente para <em>Integer</em>, <em>Double</em>, <em>String</em> ou <em>DateTime</em>. Os dados nesse campo entram no banco de dados relacional nas tabelas “<em>Work Item History</em>” e “<em>Current Work Item</em>”, mas não no cubo. Esta é uma boa escolha para campos de texto sem restrição, no entanto, você terá que usar a base relacional em vez do cubo. “<em>Summary</em>”, um campo <em>String</em> que contém uma breve descrição de um work item, é um bom exemplo de campo que deve ser do tipo Detail quando usado em relatórios.</p>
<p>                <em><span style="text-decoration:underline;">Measure</span></em>: Use este tipo somente para campos <em>Integer</em> ou <em>Double</em>. São usados para propósitos estatísticos ou para medir certos aspectos do projeto. Cada campo desse tipo aparecer tanto no grupo de medidas “Current Work Item” quanto “Work Item History”. “<em>Estimated Work</em>” é um bom exemplo de campo do tipo <em>Measure</em>.</p>
<p>                Apesar do campo “<em>Formula</em>” existir nesse form com diversas opções, os campos desse tipo são sempre agregadas como Soma (<em>Sum</em>).</p>
<p>Vamos repetir o uso desse formulário para nossos 3 campos, que nomearei assim:</p>
<ul>
<li>BlogSampleCMMi.Tracking.Analysis</li>
<li>BlogSampleCMMi.Tracking.Development</li>
<li>BlogSampleCMMi.Tracking.Tests</li>
</ul>
<p>Aba “<em>Rules</em>”</p>
<p>Nessa aba são definidas algumas propriedades do seu campo, como valor padrão, valores permitidos, validações. O que vamos configurar em todos esses campos são as seguintes regras:</p>
<p>REQUIRED – O campo não poderá ficar em branco;</p>
<p>ALLOWEDVALUES – Deixaremos esses campos serem preenchidos somente com os valores “0%”, “50%” e “100%”.</p>
<p>DEFAULT – Em um novo Work Item, é o valor inicial do campo. Vamos configurá-lo da seguinte forma:</p>
<p>                <em>From</em>: value</p>
<p>                <em>Value</em>: 0%</p>
<p>- Etapa 2: Inserí-los no formulário do work item, através da aba “<em>Layout</em>”.</p>
<p>Essa etapa, apesar de ter uma interface amigável, não é tão intuitiva quanto arrastar controles para um Windows Form, mas claro, é muito melhor do que fazer isso direto no XML. J</p>
<p>Para usarmos nosso campo, primeiro precisamos escolher onde vamos colocá-lo no nosso formulário. Eu escolhi criar uma nova aba, chamando-a de “Etapas” e lá eu coloco somente os meus campos, para não poluir outras áreas do formulário. Veja a tela de layout do Work Item Type:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type-layout.jpg"><img class="aligncenter size-full wp-image-235" title="Work Item Type - Layout" src="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type-layout.jpg?w=700&#038;h=459" alt="" width="700" height="459" /></a></p>
<p>Na árvore à esquerda, os elementos do formulário são organizados numa estrutura de árvore e, à direita, as propriedades do elemento selecionado.</p>
<p>Nessa árvore, existem alguns tipos de elemento. Vamos entendê-los já praticando.</p>
<p>Dentro do <em>TabGroup</em>, criaremos um novo elemento do tipo “TabPage”. Para isso, botão direito em cima do item <em>TabGroup -&gt; New Tab Page</em>. Um novo item na árvore aparecerá. Do lado direito, uma das propriedades chama-se “<em>Name</em>”. Altere-a para “Etapas”.</p>
<p>Para que os controles não fiquem espalhados dentro da aba, criamos um elemento do tipo “<em>Group</em>” para inserir os controles dentro. Insira então um “<em>Group</em>” ao <em>TabPage</em> usando o menu de contexto já usado acima. Quando um <em>Group</em> é criado, um item do tipo <em>Column </em>é criado dentro dele automaticamente.</p>
<p>Agora já podemos inserir nossos controles dentro da aba. Para isso, use o “<em>New Control</em>” dentro do menu de contexto em cima do item “<em>Column</em>”. Um novo item aparecerá como filho da <em>Column</em>. Ao lado direito, algumas propriedades chave do controle precisam ser modificadas. Vamos à elas:</p>
<p><em><span style="text-decoration:underline;">FieldName</span></em>: É aqui que você deve encontrar a <em>Reference Name</em> do campo que quer inserir. Neste primeiro caso, procuramos por “BlogSampleCMMi.Tracking.Analysis”.</p>
<p><em><span style="text-decoration:underline;">Label</span></em>: O label para o campo no formulário. Vamos usar “Análise e documentação (peso: 40%):”</p>
<p>Fazemos isso para os nossos 3 campos. Você pode visualizar préviamente como está ficando seu formulário, através do botão “<em>Preview Form</em>”, mas já adianto que não funciona muito bem. Por algum motivo, o que ele mostra não é exatamente como vai ficar seu formulário. L</p>
<p>Depois de pronto, salvamos o arquivo. Precisamos agora importá-lo devolta para o TFS. Para isso, vá ao menu <em>Tools -&gt; Process Editor &#8211; &gt; Work Item Types -&gt; Import WIT</em>. Em “<em>File”</em>, localize o arquivo que você editou e em “<em>Project to Import to</em>” selecione o <em>Team Project</em> para o qual a customização se aplicará. Clique então em OK. Aguarde até que a importação seja concluída.</p>
<p>É importante agora dar um refresh no seu <em>Team Explorer</em> para que os templates sejam recarregados. Após isso, abra o formulário de criação de nova task e já verá a nova aba e os campos dentro dela, assim:</p>
<p><a href="http://ricardoserradas.files.wordpress.com/2010/08/new-task.jpg"><img class="aligncenter size-full wp-image-236" title="New Task" src="http://ricardoserradas.files.wordpress.com/2010/08/new-task.jpg?w=700&#038;h=426" alt="" width="700" height="426" /></a></p>
<p>Primeira etapa completa! Logo mais, o segundo post falando sobre a criação de controle customizado.</p>
<p>[]’s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/230/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=230&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2010/08/19/quest-customizar-work-items-integracao-com-ms-project-e-relatorios-%e2%80%93-parte-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/select-work-item-type.jpg" medium="image">
			<media:title type="html">Select Work Item Type</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type.jpg" medium="image">
			<media:title type="html">Work Item Type</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/field-definition.jpg" medium="image">
			<media:title type="html">Field Definition</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/work-item-type-layout.jpg" medium="image">
			<media:title type="html">Work Item Type - Layout</media:title>
		</media:content>

		<media:content url="http://ricardoserradas.files.wordpress.com/2010/08/new-task.jpg" medium="image">
			<media:title type="html">New Task</media:title>
		</media:content>
	</item>
		<item>
		<title>Problemas com WebTest Recorder e Internet Explorer</title>
		<link>http://blog.ricardoserradas.net/2010/02/25/problemas-com-webtest-recorder-e-internet-explorer/</link>
		<comments>http://blog.ricardoserradas.net/2010/02/25/problemas-com-webtest-recorder-e-internet-explorer/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 01:32:07 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[Team System]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[VSTS]]></category>
		<category><![CDATA[Web Test]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=131</guid>
		<description><![CDATA[Olá, Desde meus primeiros contatos com o WebTest Recorder do Visual Studio Team System, identifiquei que problemas aconteciam com ele com frequência e, por conta disso, perdia tempo correndo atrás de uma solução a cada vez que isso acontecia. E ontem aconteceu denovo. Eu, com uma instalação completa e atualizada do VS 2008 Team Suite, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=131&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Desde meus primeiros contatos com o WebTest Recorder do Visual Studio Team System, identifiquei que problemas aconteciam com ele com frequência e, por conta disso, perdia tempo correndo atrás de uma solução a cada vez que isso acontecia.</p>
<p>E ontem aconteceu denovo. Eu, com uma instalação completa e atualizada do VS 2008 Team Suite, não conseguia ver a barra do WebTest Recorder no Internet Explorer 8. Fazendo uma pesquisa rápida, encontrei um post do Michael Taute que compila soluções para diversos tipos de problemas referentes ao plugin. Você pode ler o post na íntegra em:</p>
<p><a href="http://blogs.msdn.com/mtaute/archive/2007/11/09/diagnosing-and-fixing-web-test-recorder-bar-issues.aspx">http://blogs.msdn.com/mtaute/archive/2007/11/09/diagnosing-and-fixing-web-test-recorder-bar-issues.aspx</a></p>
<p>Porém, um dos problemas me chamou a atenção ontem, depois de ter passado por ele. O cenário é o seguinte:</p>
<ul>
<li>Windows 7 64 Bits</li>
<li>Visual Studio 2008 Service Pack 1 Up-To-Date</li>
<li>Internet Explorer 8</li>
</ul>
<p>O add-on do webtest recorder estava habilitado no navegador e, mesmo assim, a barra não aparecia. Veja a solução apontada pelo Michael:</p>
<p>O Windows Vista faz cache da lista de barras disponíveis para o Internet explorer e a barra do gravador não estava disponível na sua lista. A correção consiste em forçar o Windows a reconstruir este cache. Para fazer isso, primeiro certifique-se que você está sem nenhuma janela do Internet Explorer aberta e então abra o editor de registros do Windows (Regedit) e exclua as seguintes chaves:</p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component Categories\{00021493-0000-0000-C000-000000000046}</p>
<p>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component Categories\{00021494-0000-0000-C000-000000000046}</p>
<p>Nota: Por padrão, o editor de registro 32 bits está localizado em %WINDIR%\SysWow64\RegEdt32.exe</p>
<p>Vamos aguardar e torcer para que a ferramenta de testes web do Visual Studio 2010 seja mais estável <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>[]&#8216;s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=131&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2010/02/25/problemas-com-webtest-recorder-e-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ To Entities e o método Contains, um contorno</title>
		<link>http://blog.ricardoserradas.net/2010/01/08/linq-to-entities-e-o-metodo-contains-um-contorno/</link>
		<comments>http://blog.ricardoserradas.net/2010/01/08/linq-to-entities-e-o-metodo-contains-um-contorno/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 03:40:55 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=115</guid>
		<description><![CDATA[Olá a todos, Depois de muito tempo, volto a escrever. Tem sido uma dura correria que me impossibilitou de dar atenção a este valioso espaço. Porém, mais uma vez, prometo tentar reservar um pouco do meu tempo para enriquecer o conteúdo desta página. Volto hoje com um assunto que não costumo discutir aqui no blog, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=115&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá a todos,</p>
<p>Depois de muito tempo, volto a escrever. Tem sido uma dura correria que me impossibilitou de dar atenção a este valioso espaço. Porém, mais uma vez, prometo tentar reservar um pouco do meu tempo para enriquecer o conteúdo desta página.</p>
<p>Volto hoje com um assunto que não costumo discutir aqui no blog, que é codificação.</p>
<p>Ultimamente tenho ocupado quase que todo o meu tempo com estudos e discussões sobre a melhor forma de codificar algo. Um problema que encontrei dias atrás foi uma limitação do LINQ To Entities, que não implementou um método mapeado para a função <strong>&#8220;IN&#8221;</strong> do SQL. Um exemplo: quero obter todos os usuários do banco cujo ID é um dos números da sequência mística do seriado <em>LOST</em>, que é: 4, 8, 15, 16, 23, 42. A query SQL seria:</p>
<pre><span style="color:#993300;">SELECT * FROM USER U WHERE U.ID IN (4, 8, 15, 16, 23, 42)</span></pre>
<p> </p>
<p>Em tese, uma expressão LINQ para fazer a mesma coisa seria mais ou menos assim:</p>
<p>string[] ids = { &#8220;4&#8243;, &#8220;8&#8243;, &#8220;15&#8243;, &#8220;16&#8243;, &#8220;23&#8243;, &#8220;42&#8243; };</p>
<pre><span style="color:#0000ff;">var </span>users = (<span style="color:#0000ff;">from</span> t <span style="color:#0000ff;">in</span> _db.<span style="color:#339966;">User </span><span style="color:#0000ff;">where</span> ids.Contains(t.Id.ToString()) <span style="color:#0000ff;">select</span> t).ToList();</pre>
<p> </p>
<p>Em tempo de compilação, tudo certo. Porém, ao executar este código, você receberá esta mensagem de erro:</p>
<pre>LINQ to Entities does not recognize the method 'Boolean Contains(Int32)'</pre>
<p> </p>
<p>É possível estender as bibliotecas do LINQ para mapear a função, criar uma função ultra-complicada para fazer isso, mas há uma maneira de resolver com uma linha de código, que é:</p>
<pre><span style="color:#0000ff;">var</span> users = _db.<span style="color:#339966;">User</span>.Where("it.Id IN {" + <span style="color:#0000ff;">string</span>.Join(",", ids) + "}");</pre>
<p> </p>
<p>Atenção para a palavra chave “it”, ela representa sua entidade na query. Logo, Id é a propriedade.</p>
<p>Experimente!</p>
<p>[]&#8216;s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=115&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2010/01/08/linq-to-entities-e-o-metodo-contains-um-contorno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro MSB6006 em testes unitários numa Team Build</title>
		<link>http://blog.ricardoserradas.net/2009/10/20/erro-msb6006-em-testes-unitarios-numa-team-build/</link>
		<comments>http://blog.ricardoserradas.net/2009/10/20/erro-msb6006-em-testes-unitarios-numa-team-build/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 19:54:55 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[MSB6006]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[Unit Test]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=111</guid>
		<description><![CDATA[Erro MSB6006 numa team build<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=111&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá a todos! Hoje vamos falar de mais um capítulo da série &#8220;Problema e solução&#8221;.</p>
<p><strong>Problema</strong>:</p>
<p>Ao configurar uma Team Build no VSTS de um projeto que compila e que roda os testes unitários tudo certinho, a build roda, porém o status dela fica como &#8220;<em>Partially Succeeded</em>&#8221; porque os testes unitários falharam e, ao analisar o log, você encontra a seguinte linha no final:</p>
<p><span style="color:#ff0000;">MSBUILD : warning MSB6006: &#8220;MSTest.exe&#8221; exited with code 1.</span></p>
<p>O mais interessante é que se você roda os testes unitários a partir do <em>Test List</em> da Solution, todos funcionam, não é?</p>
<p><strong>Causa</strong>:</p>
<p>Pois bem. Por algum motivo, o erro se dá por conta do usuário TFSSERVICE* não ter permissão na pasta onde o resultado do build foi colocado (ou &#8220;dropado&#8221;).</p>
<p><strong>Solução</strong>:</p>
<p>Basta permitir escrita (tanto NTFS quando de compartilhamento) para pra o usuário TFSSERVICE na pasta de build drop.</p>
<p>*Este nome pode variar de acordo com a instalação realizada.</p>
<p>[]&#8216;s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=111&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2009/10/20/erro-msb6006-em-testes-unitarios-numa-team-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro TF53010 ao iniciar o TFSServerScheduler</title>
		<link>http://blog.ricardoserradas.net/2009/10/13/erro-tf53010-ao-iniciar-o-tfsserverscheduler/</link>
		<comments>http://blog.ricardoserradas.net/2009/10/13/erro-tf53010-ao-iniciar-o-tfsserverscheduler/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 20:09:37 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=108</guid>
		<description><![CDATA[Mais um erro comum depois de criar uma nova instalação do servidor do VSTS é aquele que você visualiza logo ao iniciar a máquina, dizendo algo como &#8220;Alguns serviços não puderam ser inicializados adequadamente. Consulte o visualizador de eventos&#8230;&#8221;. Então, a primeira iniciativa que tomamos é olhar qual serviço com modo de startup automático não [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=108&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Mais um erro comum depois de criar uma nova instalação do servidor do VSTS é aquele que você visualiza logo ao iniciar a máquina, dizendo algo como &#8220;Alguns serviços não puderam ser inicializados adequadamente. Consulte o visualizador de eventos&#8230;&#8221;.</p>
<p>Então, a primeira iniciativa que tomamos é olhar qual serviço com modo de startup automático não foi inicializado.</p>
<p>Chegando lá no <em>snap-in</em> de serviços, conferimos que o serviço &#8220;<em>Visual Studio Team Foundation Server Task Scheduler</em>&#8221; (TFSServerScheduler) não está inicializado. Vamos lá então: iniciamos ele manualmente e&#8230; Ele inicia! E fica lá, rodando normalmente. Mas oras, então porque ele não conseguiu subir no startup da máquina?</p>
<p>Consultando o Event Log, encontramos a seguinte mensagem de erro:</p>
<p>TF53010: The following error has occurred in a Team Foundation component or extension:</p>
<p>(&#8230;)</p>
<p>Application Domain: TFSServerScheduler.exe</p>
<p>(&#8230;)</p>
<p>Detailed Message: Unable to connect to the remote server</p>
<p><strong>O que acontece?</strong></p>
<p>O TFSServerScheduler depende tanto do SQL Server quanto do IIS para funcionar. Logo, se um dos dois serviços ainda não estiver devidamente inicializado, o TFSServerScheduler não vai conseguir ser inicializado também.</p>
<p><strong>Como contornar isso?</strong></p>
<p>Basta configurar o serviço TFSServerScheduler para ser dependente dos serviços do SQL e do IIS. Assim, ele só fará tentativas de inicialização depois que os dois serviços os quais ele depende estejam devidamente no ar. Para configurar isso, use a seguinte linha de comando no Command Prompt:</p>
<p>sc config TFSServerScheduler depend= W3SVC/MSSQLSERVER</p>
<p>Reinicie o servidor para conferir. O serviço estará devidamente inicializado.</p>
<p>[]&#8216;s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=108&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2009/10/13/erro-tf53010-ao-iniciar-o-tfsserverscheduler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro TF15003 no Event Viewer do TFS</title>
		<link>http://blog.ricardoserradas.net/2009/10/13/erro-tf15003-no-event-viewer-do-tfs/</link>
		<comments>http://blog.ricardoserradas.net/2009/10/13/erro-tf15003-no-event-viewer-do-tfs/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 19:01:11 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[TF15003]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=100</guid>
		<description><![CDATA[Erro encontrado no Event Viewer do windows onde o TFS está instalado.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=100&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Está aí mais um código de erro que vem incomodando logo depois de uma instalação nova e completa de um servidor do VSTS é feita. A mensagem de erro é encontrada no Visualizador de Eventos (Event Viewer) do Windows e é exatamente assim:</p>
<p><em>TF15003: The cache root specified in the fileCacheRoot configuration value must be an absolute (rooted) path. File caching will be disabled.</em></p>
<p>Isso soa falha no processo de instalação e a causa nada mais é do que a pasta que está sendo apontada como cache no arquivo de Configuração do WebService de Version Control do TFS não existir. Como conferir isso? Veja:</p>
<p>- Acesse a pasta de instalação do TFS e edite o arquivo Web.Config, comumente em:</p>
<p>C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\VersionControl\Web.Config</p>
<p>- Encontre a chave “fileCacheRoot”, dentro de “AppSettings” e confira se a pasta para a qual a chave está apontando existe. No meu caso, apontava para:</p>
<p>C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\VersionControl\Data</p>
<p>Se a pasta realmente não existir, basta criá-la. Após isso, reinicie os serviços e confira se a mensagem de erro aparece de novo no Event Viewer. Se não aparecer mais, pronto! Seu serviço de controle de versão voltará a trabalhar com cache.</p>
<p>[]’s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=100&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2009/10/13/erro-tf15003-no-event-viewer-do-tfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro MSB4019 numa Team Build</title>
		<link>http://blog.ricardoserradas.net/2009/09/29/erro-msb4019-numa-team-build/</link>
		<comments>http://blog.ricardoserradas.net/2009/09/29/erro-msb4019-numa-team-build/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 20:07:49 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[MSB4019]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=86</guid>
		<description><![CDATA[Como corrigir o erro MSB4019 numa team build.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=86&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Numa instancia recém instalada do TFS 2008, onde tudo parecia estar funcionando 100%, encontrei um problema o qual percebi ter pouca referência à respeito.</p>
<p>Criei uma solution de testes para armazenar no Source Control, adicionei projetos, tudo tranqüilo. Depois de tudo, parti para a configuração de um Team Build.</p>
<p>A solução compilava normalmente na máquina client, porém, depois que subi a solução no TFS o team build falhou. Veja a mensagem de erro:</p>
<p style="padding-left:30px;"><em>Error MSB4019: The imported project [TargetPath] was not found. Confirm that the path in the &lt;Import&gt; declaration is correct, and that the file exists on disk.</em></p>
<p>O erro era vinculado sempre à Web Projects (Web Application, WebService, etc). Isso ocorre porque os targets para aplicações web não estão instaladas no servidor de build.</p>
<p>Existem <strong>duas formas</strong> de resolver o problema. Uma delas (e a que eu aconselho) é simplesmente instalar o Visual Studio 2008 com as mínimas opções (C# e Visual Web Developer) no servidor de build. O ponto negativo desta solução é que estará consumindo espaço em disco do servidor de build.</p>
<p>A outra opção, se não quiser instalar o VS 2008 no servidor é a seguinte:</p>
<p>- Acesse: MSBuild\Microsoft\VisualStudio\v9.0\WebApplications na máquina client;</p>
<p>- Copie Microsoft.WebApplication.targets para o diretório da solução do projeto;</p>
<p>- Adicione o arquivo como parte da solução e versione-o;</p>
<p>- Edite o arquivo TFSBuild.proj da sua WebApplication usando um editor de texto (normalmente em [TeamProject]/TeamBuildTypes/[SolutionName]Build);</p>
<p>- Encontre a linha que faz o import do WebApplication Target a partir da pasta do MSBuild no Program Files:</p>
<p style="padding-left:30px;"><em>&lt;Import Project=&#8221;$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets&#8221; /&gt;</em></p>
<p>E substitua por:</p>
<p style="text-align:left;padding-left:30px;"><em>&lt;Import Project=&#8221;$(SolutionDir)\Microsoft.WebApplication.targets&#8221; /&gt;</em></p>
<p>- Salve seu arquivo e suba a nova versão no TFS.</p>
<p>Esta solução nada mais faz do que disponibilizar o arquivo de target dentro da própria solution para que o MSBuild o busque lá dentro. O ponto negativo desta é que para cada solução que você for versionar que tiver um Web Project será necessário versionar uma cópia do arquivo de target no TFS.</p>
<p>Escolher a melhor opção para seu cenário é com você. Experimente!</p>
<p>Um abraço,<br />
Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=86&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2009/09/29/erro-msb4019-numa-team-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro TF30224 ao criar novo projeto no TFS 2010</title>
		<link>http://blog.ricardoserradas.net/2009/09/18/erro-tf30224-ao-criar-novo-projeto-no-tfs-2010/</link>
		<comments>http://blog.ricardoserradas.net/2009/09/18/erro-tf30224-ao-criar-novo-projeto-no-tfs-2010/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 20:17:21 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Team System]]></category>
		<category><![CDATA[TF30224]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=51</guid>
		<description><![CDATA[Seguindo minha saga de estudos no VSTS 2010, encontrei mais um problema: o erro TF30224 ao tentar criar um novo projeto no TFS. A mensagem de erro, depois que descobrimos a solução, é bem clara: “verifique se o servidor SQL está no ar ou se você tem permissão para acessá-lo“. Não é bem o servidor [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=51&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Seguindo minha saga de estudos no VSTS 2010, encontrei mais um problema: o erro TF30224 ao tentar criar um novo projeto no TFS.</p>
<p>A mensagem de erro, depois que descobrimos a solução, é bem clara: “<em>verifique se o servidor SQL está no ar ou se você tem permissão para acessá-lo</em>“. Não é bem o servidor SQL, e sim o servidor de relatórios, o Report Server.</p>
<p>Ao acessar http://[TFSSERVER]/Reports com o TFSSETUP (usuário que usei para instalar todo o TFS) vi que não conseguia enchergar nada. Como resolver isso? Acessando a mesma URL porém autenticando-se como o Administrador local do servidor.</p>
<p>Pronto! Só atribuir permissão de <em>Content Manager</em> para o TFSSETUP (ou o usuário que está usando para criar o projeto, o seu “<em>TFS Admin”</em>) assim:</p>
<p>- Acesse http://[TFSSERVER]/Reports como orientado acima;</p>
<p>- Clique na aba “Propriedades”;</p>
<p>- Clique em “Atribuição de nova função”;</p>
<p>- Em “Nome do grupo ou usuário”, digite o usuário que necessita da permissão (no meu caso, [TFSSERVER]\TFSSETUP);</p>
<p>- Em “Função”, selecione “Content Manager” e em seguida clique em OK.</p>
<p>E pronto! Você conseguirá prosseguir com a criação do Team Project.</p>
<p>[]’s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=51&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2009/09/18/erro-tf30224-ao-criar-novo-projeto-no-tfs-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro TF255147 ao configurar o TFS 2010</title>
		<link>http://blog.ricardoserradas.net/2009/09/18/erro-tf255147-ao-configurar-o-tfs-2010/</link>
		<comments>http://blog.ricardoserradas.net/2009/09/18/erro-tf255147-ao-configurar-o-tfs-2010/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 20:16:30 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Team System]]></category>
		<category><![CDATA[TF255147]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[VSTS]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=49</guid>
		<description><![CDATA[Olá pessoal, Hoje instalando o TFS 2010 num ambiente single server me deparei com dois problemas que não estão previstos no TFSInstall.chm, que vem no DVD de instalação do TFS. O primeiro erro foi que não há web.config em “C:\Program Files\Microsoft Team Foundation Server 10.0\Application Tier\Web Services”. Solução: É preciso criar uma cópia do web.config.template já [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=49&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Hoje instalando o TFS 2010 num ambiente single server me deparei com dois problemas que não estão previstos no TFSInstall.chm, que vem no DVD de instalação do TFS.</p>
<p>O primeiro erro foi que não há web.config em “C:\Program Files\Microsoft Team Foundation Server 10.0\Application Tier\Web Services”.</p>
<p><strong>Solução</strong>: É preciso criar uma cópia do web.config.template já existente lá.</p>
<p>Segundo erro: Visualizado no wizard de configuração padrão do TFS. Veja:</p>
<p>Error [ Configuration Database ] TF255147: The following server that is running SQL Server is not listening on the expected TCP port: TFS01.</p>
<p style="text-align:center;"><img style="display:block;margin:0 auto;padding:0;" title="Erro de configuração de banco de dados no wizard de configuração padrão." src="http://enterprisebrothers.files.wordpress.com/2009/09/error1.jpg?w=450&amp;h=321&#038;h=321" alt="Erro de configuração de banco de dados no wizard de configuração padrão." width="450" height="321" /></p>
<p>As portas necessárias já estavam liberadas, a instancia do SQL já estava rodando… O que fazer? Foi então quando me lembrei de dar uma olhada nas configurações do SQL 2008 (em <em>Start &gt; All Programs &gt; Microsoft SQL Server 2008 &gt; Configuration Tools &gt; SQL Server Configuration Manager</em>)  e lá vi que o protocolo TCP/IP não estava habilitado (e não vem habilitado por padrão numa instalação do SQL).</p>
<p style="text-align:center;"><img style="display:block;margin:0 auto;padding:0;" title="SQL Configuration Manager" src="http://enterprisebrothers.files.wordpress.com/2009/09/sqlconfmgr.jpg?w=450&amp;h=168&#038;h=168" alt="SQL Configuration Manager" width="450" height="168" /></p>
<p>O que fiz então foi habilitar o protocolo, com um duplo clique em TCP/IP e na aba Protocol, mudar a propriedade <strong>Enabled</strong> para Yes.</p>
<p>Feito isso, voilá! O teste de configurações rodou 100%! Mas, há um porém… Se a instalação do TFS for interrompida por algum motivo (no nosso caso, pelo SQL não estar corretamente configurado) a instalação do Sharepoint Services será corrompida. Isso é um <strong>bug conhecido</strong> do Beta1 do TFS.</p>
<p>Por conta disso, mãos à obra! Desinstalar todo o TFS + WSS e começar denovo. Então, dessa vez, tudo correrá bem. <img style="margin:0 5px;padding:0;" src="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=":-)" /></p>
<p>Um abraço!</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=49&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2009/09/18/erro-tf255147-ao-configurar-o-tfs-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>

		<media:content url="http://enterprisebrothers.files.wordpress.com/2009/09/error1.jpg?w=450&#38;h=321" medium="image">
			<media:title type="html">Erro de configuração de banco de dados no wizard de configuração padrão.</media:title>
		</media:content>

		<media:content url="http://enterprisebrothers.files.wordpress.com/2009/09/sqlconfmgr.jpg?w=450&#38;h=168" medium="image">
			<media:title type="html">SQL Configuration Manager</media:title>
		</media:content>

		<media:content url="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" medium="image">
			<media:title type="html">:-)</media:title>
		</media:content>
	</item>
	</channel>
</rss>