<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Juan Pablo Garcia Blog</title>
	
	<link>http://www.computerapia.com</link>
	<description>La verdadera extension .JPG</description>
	<pubDate>Sat, 30 Aug 2008 19:06:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JuanPabloGarciaBlog" type="application/rss+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>Un año y cuatro meses después…</title>
		<link>http://www.computerapia.com/index.php/2008/08/30/un-ao-y-cuatro-meses-despus/</link>
		<comments>http://www.computerapia.com/index.php/2008/08/30/un-ao-y-cuatro-meses-despus/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 17:44:43 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2008/08/30/un-ao-y-cuatro-meses-despus/</guid>
		<description><![CDATA[English Version
Ayer por la noche despu&#233;s de haber tomado unas cervezas con compa&#241;eros del trabajo, llegue a casa, me tir&#233; en la cama y me puse a pensar en este &#250;ltimo a&#241;o y cuatro meses desde que entre a Souhtworks.
Mientras me remontaba en el tiempo recordaba los proyectos y los clientes para los cuales hab&#237;a [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a title="English Version" href="http://blogs.southworks.net/jpgarcia/2008/08/31/one-year-and-four-months-later/" target="_blank">English Version</a></p>
<p>Ayer por la noche despu&#233;s de haber tomado unas cervezas con compa&#241;eros del trabajo, llegue a casa, me tir&#233; en la cama y me puse a pensar en este &#250;ltimo a&#241;o y cuatro meses desde que entre a <strong>Souhtworks</strong>.</p>
<p>Mientras me remontaba en el tiempo recordaba los proyectos y los clientes para los cuales hab&#237;a trabajado, como &#8220;<a title="Microsoft Architecture Strategy Team" href="http://msdn.microsoft.com/en-us/architecture/default.aspx" target="_blank">Microsoft Architecture Strategy Team</a>&#8221;, &#8220;<a title="Microsoft Depeloper &amp; Platform Evangelism Team" href="http://www.federaldeveloper.com/default.aspx" target="_blank">Microsoft Depeloper &amp; Platform Evangelism Team</a>&#8221;, &#8220;<a title="Microsoft Connected Services Framework Team" href="http://www.microsoft.com/serviceproviders/solutions/connectedservicesframework.mspx" target="_blank">Microsoft Connected Services Framework Team</a>&#8221;, &#8220;<a title="Microsoft SQL Server Team" href="http://msdn.microsoft.com/en-us/sqlserver/default.aspx" target="_blank">Microsoft SQL Server Team</a>&#8221;, &#8220;<a title="Grupo Sancor Seguros" href="http://www.sancorseguros.com/" target="_blank">Grupo Sancor Seguros</a>&#8221; entre otros, y la gente importante que hab&#237;a conocido personalmente, como <a title="Eugenio Pace" href="http://blogs.msdn.com/eugeniop/" target="_blank">Eugenio Pace</a> y <a title="Gianpaolo Carraro" href="http://blogs.msdn.com/gianpaolo/" target="_blank">Gianpaolo Carraro</a>.</p>
<p>Luego comenzaron a aparecer en mi mente palabras y acr&#243;nimos de conocimientos t&#233;cnicos que hab&#237;a adquirido e incorporado en este &#250;ltimo tiempo en Southworks. En ese momento comenc&#233; a imaginarme como una especie de <strong><em>&#8220;TagCloud&#8221;</em></strong> mental y fue ah&#237; cuando decid&#237; escribir este post, para dejar esto como una bit&#225;cora de experiencia y poder compararla m&#225;s adelante con nuevas palabras que seguramente se agregaran a mi <strong><em>&#8220;Mind TagCloud&#8221;</em></strong>.</p>
<p>Mas all&#225; de todas todos estos tags, quer&#237;a agradecer a todos los Southies que me ayudaron a llenar mi mente de todos estos conocimientos y en especial a mis dos&#160; mentores <b><a title="Johnny Halife" href="http://blogs.southworks.net/jhalife" target="_blank">Johnny Halife</a></b> y <b><a title="Matias Woloski" href="http://blogs.southworks.net/mwoloski/" target="_blank">Matias Woloski</a></b> a quienes hoy en d&#237;a sigo admirando y respetando, pero con los que tambi&#233;n en los momentos donde no hay computadoras de por medio me sigo divirtiendo.</p>
<p>Ahi va mi &quot;Mind TagCloud&quot;:</p>
<p><span style="font-size: 14px">&#160; Refactoring&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Code Analysis&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Retrospective&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; TDD&#160; </span><span style="font-size: 17px">&#160; WCF&#160; </span><span style="font-weight: bold; font-size: 19px">&#160; WSDL&#160; </span><span style="font-size: 14px">&#160; Continuous Integration&#160; </span><span style="font-size: 17px">&#160; Patterns&#160; </span><span style="font-size: 14px">&#160; Cluster Server&#160; </span><span style="font-size: 14px">&#160; ISO&#160; </span><span style="font-size: 13px">&#160; Virtualization&#160; </span><span style="font-size: 12px">&#160; SOA&#160; </span><span style="font-size: 14px">&#160; Singleton&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Cyclomatic Complexity&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; WPF&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Model View Controller&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; REST&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Linq to XML&#160; </span><span style="font-size: 13px">&#160; Mocks&#160; </span><span style="font-size: 12px">&#160; Paravirtualization&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Sprint&#160; </span><span style="font-size: 12px">&#160; Hyper-V&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Lamda Expressions&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Repository&#160; </span><span style="font-size: 17px">&#160; SAN&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Synchronization Framework&#160; </span><span style="font-size: 14px">&#160; iSCSI&#160; </span><span style="font-size: 13px">&#160; LUN&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Powershell&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; SCRUM&#160; </span><span style="font-size: 17px">&#160; Ssds&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Agile&#160; </span><span style="font-size: 12px">&#160; Spike&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; NAS&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Iteration Planning&#160; </span><span style="font-size: 14px">&#160; Dependency Injection&#160; </span><span style="font-size: 16px">&#160; Factory&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Linq to SQL&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Code Coverage&#160; </span><span style="font-size: 12px">&#160; Subversion&#160; </span><span style="font-size: 17px">&#160; Security Token Service&#160; </span><span style="font-size: 14px">&#160; CMMi&#160; </span><span style="font-size: 19px" font-weight:bold;?="font-weight:bold;?">&#160; StyleCop&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Model View Presenter&#160; </span><span style="font-size: 12px">&#160; Strategy&#160; </span><span style="font-size: 19px" font-weight:bold;="font-weight:bold;">FxCop&#160; </span><span style="font-size: 14px">&#160; Serialization&#160; </span><span style="font-size: 12px">&#160; Apache&#160; </span><span style="font-size: 17px">&#160; Prototype&#160; </span><span style="font-size: 13px">&#160; Datamember&#160; </span><span style="font-size: 14px">&#160; Composite Application Block&#160; </span><span style="font-size: 12px">&#160; Build Server&#160; </span><span style="font-size: 17px">&#160; RSS&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; DIT&#160; </span><span style="font-size: 14px">&#160; S+S&#160; </span><span style="font-size: 13px">&#160; Backlog&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Commitment&#160; </span><span style="font-weight: bold; font-size: 18px">&#160; Inversion Of Control&#160; </span><span style="font-size: 14px">&#160; Scaffolding&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Abstract Factory&#160; </span><span style="font-size: 12px">&#160; Reflection&#160; </span><span style="font-size: 13px">&#160; LCOM&#160; </span><span style="font-size: 17px">&#160; Iteration Review&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; Software As A Service&#160; </span><span style="font-size: 17px">&#160; DataContract&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; TFS&#160; </span><span style="font-weight: bold; font-size: 19px">&#160; Code Query Language&#160; </span><span style="font-weight: bold; font-size: 16px">&#160; SOAP&#160; </span><span style="font-size: 17px">&#160; Dynamic Language Runtime&#160; </span><span style="font-size: 12px">&#160; Lightweight Directory Services&#160; </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2008/08/30/un-ao-y-cuatro-meses-despus/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Actualizando los archivos AssemblyInfo usando las Southworks SDC tasks</title>
		<link>http://www.computerapia.com/index.php/2008/07/14/actualizando-los-archivos-assemblyinfo-usando-las-southworks-sdc-tasks/</link>
		<comments>http://www.computerapia.com/index.php/2008/07/14/actualizando-los-archivos-assemblyinfo-usando-las-southworks-sdc-tasks/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 00:27:00 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[MSBuild]]></category>

		<category><![CDATA[Southworks SDC Tasks]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2008/07/14/updating-your-assembly-info-files-with-southworks-sdc-tasks/</guid>
		<description><![CDATA[English Version
Johnny and Ezequiel han publicado en sus Blogs acerca de las Southworks SDC Tasks que hemos publicado dos semanas atrás en Google Code. Este projecto es un set de tasks para MSBuild tasks que construimos mientras madurabamos nuestro proceso de build.
Durante este tiempo voy a intentar darles una guía sobre estas tasks que hemos [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://blogs.southworks.net/jpgarcia/2008/07/11/updating-your-assembly-info-files-with-southworks-sdc-tasks/" target="_blank">English Version</a></p>
<p><a href="http://blogs.southworks.net/jhalife/2008/06/27/turn-on-the-radio-were-live-baby/" target="_blank">Johnny</a> and <a href="http://blogs.southworks.net/emorito/2008/06/30/southworkstasksgooglecode/" target="_blank">Ezequiel</a> han publicado en sus Blogs acerca de las <a href="http://code.google.com/p/sdctasks/" target="_blank">Southworks SDC Tasks</a> que hemos publicado dos semanas atrás en <strong>Google Code</strong>. Este projecto es un set de tasks para <strong>MSBuild</strong> tasks que construimos mientras madurabamos nuestro proceso de build.</p>
<p>Durante este tiempo voy a intentar darles una guía sobre estas tasks que hemos desarrollado por medio de un ejemplo de cada una de ellas.</p>
<p>En este post van a encontrar de que forma se pueden actualizar los archivos <em>AssemblyInfo </em>con información de la empresa utilizando la task <strong>UpdateAssemblyinfo </strong>facilmente.</p>
<p>Esta task es basntate simple, entonces, vamos a crear un simple projecto de <strong>MSBuild</strong> (<strong>.proj</strong>) para demostrar como funciona.</p>
<h2>Referenciando el assembly SDC en el proyecto de MSBuild</h2>
<p>El primer paso es añadir la referencia para esta task en particular configurando los nodos <strong>AssemblyFile</strong> y <strong>TaskName</strong> con los siguientes valores:</p>
<div>
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Project</span> <span style="color: #ff0000">DefaultTargets</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfos&quot;</span> </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">         <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">UsingTask</span> <span style="color: #ff0000">AssemblyFile</span><span style="color: #0000ff">=&quot;d:\test\Southworks.Sdc.Tasks.dll&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">             <span style="color: #ff0000">TaskName</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfo&quot;</span><span style="color: #0000ff">/&gt;</span> </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Project</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<p>Hay que tener en cuenta que el nodo <strong>DefaultTargets</strong> indica cual va a ser el target que va a ejecutarse primero, más adelante voy a incluir este target.</p>
<h2>Definiendo que files van a ser actualizados</h2>
<p>El siguiente paso es indentificar y configurar cuáles van a ser los archivos que modificará nuestra task y donde se encuentran. Para esto vamos a crear un <strong>ItemGroup</strong>. Si querés conocer más acerca de incluir y/o excluir items mira este link <a href="http://msdn.microsoft.com/en-us/library/646dk05y.aspx">http://msdn.microsoft.com/en-us/library/646dk05y.aspx</a>.</p>
<div>
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Project</span> <span style="color: #ff0000">DefaultTargets</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfos&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">         <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">&#160;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">UsingTask</span> <span style="color: #ff0000">AssemblyFile</span><span style="color: #0000ff">=&quot;d:\test\Southworks.Sdc.Tasks.dll&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">             <span style="color: #ff0000">TaskName</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfo&quot;</span><span style="color: #0000ff">/&gt;</span>  </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">ItemGroup</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyInfos</span> <span style="color: #ff0000">Include</span><span style="color: #0000ff">=&quot;d:\test\**\AssemblyInfo.cs&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ItemGroup</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">&#160;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Project</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<h2>Configurando el target UpdateAssemblyinfo</h2>
<p>Por último debemos crear y configurar el nuevo target especificando la información que va a ser reemplazada en los archivos que hemos configurado en el paso anterior.</p>
<div>
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Project</span> <span style="color: #ff0000">DefaultTargets</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfos&quot;</span> </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">         <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">&#160;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">UsingTask</span> <span style="color: #ff0000">AssemblyFile</span><span style="color: #0000ff">=&quot;d:\test\Southworks.Sdc.Tasks.dll&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">             <span style="color: #ff0000">TaskName</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfo&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">  </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">ItemGroup</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyInfos</span> <span style="color: #ff0000">Include</span><span style="color: #0000ff">=&quot;d:\test\**\AssemblyInfo.cs&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ItemGroup</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">&#160;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">Target</span> <span style="color: #ff0000">Name</span><span style="color: #0000ff">=&quot;UpdateAssemblyInfos&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">    </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">UpdateAssemblyinfo</span> <span style="color: #ff0000">Include</span><span style="color: #0000ff">=&quot;@(AssemblyInfos)&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">                      <span style="color: #ff0000">AssemblyCopyright</span><span style="color: #0000ff">=&quot;Southworks (r) copyright&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">                      <span style="color: #ff0000">AssemblyCompany</span><span style="color: #0000ff">=&quot;Southworks&quot;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">                      <span style="color: #ff0000">AssemblyProduct</span><span style="color: #0000ff">=&quot;Sample product &quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Target</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">  </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Project</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<h2>Verificación</h2>
<p>Para comprobar que todo esta funcionando, podemos ejecutar el projecto con <strong>MSBuild</strong> como se muestra en la siguiente imagen: </p>
<p><a href="http://www.computerapia.com/wp-content/upload/2008/07/image.png"><img height="157" alt="image" src="http://www.computerapia.com/wp-content/upload/2008/07/image-thumb.png" width="510" /></a></p>
<p>Por último, abriendo alguno de los&#160; <strong>AssemblyInfo.cs</strong> incluidos y veremos como se ha actualizado: </p>
<p><a href="http://www.computerapia.com/wp-content/upload/2008/07/image1.png"><img height="139" alt="image" src="http://www.computerapia.com/wp-content/upload/2008/07/image-thumb1.png" width="465" /></a></p>
<p>Gracias, y sigan atentos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2008/07/14/actualizando-los-archivos-assemblyinfo-usando-las-southworks-sdc-tasks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Utilizando wildcards de la forma \**\ en CruiseControl.Net</title>
		<link>http://www.computerapia.com/index.php/2008/05/25/utilizando-wildcards-de-la-forma-en-cruisecontrolnet/</link>
		<comments>http://www.computerapia.com/index.php/2008/05/25/utilizando-wildcards-de-la-forma-en-cruisecontrolnet/#comments</comments>
		<pubDate>Sun, 25 May 2008 04:29:00 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[Code Quality]]></category>

		<category><![CDATA[Continuous Integration]]></category>

		<category><![CDATA[CruiseControl.Net]]></category>

		<category><![CDATA[MSBuild]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2008/05/25/utilizando-wildcards-de-la-forma-en-cruisecontrolnet/</guid>
		<description><![CDATA[English Version
Esta última semana estuvimos trabajando en nuestro Build Server utilizando CruiseControl.Net para permitir la posibilidad de ejecutar múltiples Test / Code Coverage tasks para dos o más soluciones.
Una vez que tenemos configurado el MSBuild Project para ejecutar, por ejemplo, un set de dos o más RunTests / RunCoverage tasks, necesitamos fusionar estos resultados al [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://blogs.southworks.net/jpgarcia/2008/05/25/folder-wildcards-like-in-cruisecontrolnet/" target="_blank">English Version</a></p>
<p>Esta última semana estuvimos trabajando en nuestro Build Server utilizando CruiseControl.Net <strike></strike>para permitir la posibilidad de ejecutar múltiples Test / Code Coverage tasks para dos o más soluciones.</p>
<p>Una vez que tenemos configurado el <strong>MSBuild</strong> Project para ejecutar, por ejemplo, un set de dos o más <strong>RunTests</strong> / <strong>RunCoverage</strong> tasks, necesitamos fusionar estos resultados al log de <strong>MSBuild</strong> luego de su ejecución.</p>
<p>Entonces, nuestro primer intento fue modificar el archivo <strong>ccnet.config</strong> para poder fusionar los archivos generados por estas tasks usando el mismo patrón utilizado por <strong>MSBuild</strong>, quiero decir, usando <strong>/**/</strong>, algo como esto:</p>
<div>
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">&lt;</span><span style="color: #800000">merge</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">files</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">file</span><span style="color: #0000ff">&gt;</span>D:\srv\ccnet\logs\project\**\*.trx<span style="color: #0000ff">&lt;/</span><span style="color: #800000">file</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">file</span><span style="color: #0000ff">&gt;</span>D:\srv\ccnet\logs\project\**\*.cvg<span style="color: #0000ff">&lt;/</span><span style="color: #800000">file</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">files</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">merge</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<p>En ese momento nos dimos cuenta, que CruiseControl.Net no posee esta funcionalidad, únicamente nos permite la utilización de Wildcards de la forma convencional, por ejemplo <strong>D:\srv\ccnet\logs\project\theProject\*.trx</strong>, y como el código fuente de CruiseControl.Net está disponible, me puse a escribir algunas líneas de código para modificar el assembly <strong>ThoughtWorks.CruiseControl.Core</strong> para que nos permita utilizar <strong>/**/</strong> como lo hace <strong>MSBuild</strong>.</p>
<p>En este post van a encontrar el código fuente de un Spike que escribí con una serie de test para implementar esta funcionalidad y el código fuente del archivo WildCardPath.cs actualizado que forma parte del Core de proyecto CruiseControl.Net.</p>
<ul>
<li>Solucion Spike con unit tests [<a href="http://wauokg.blu.livefilestore.com/y1pe7Q3tmlVXP4V8KDMosAoCX6nGHh0ZY4wwPYtZZpRBgG0ke4_cWcyeWF9J_HpDwukTVtQYMN9A2_k2cDxupTRBA/Wildcards.zip?download">Download</a>] </li>
<li>El archivo donde se encuentra la clase <strong>WildCardPath</strong> del assembly <strong>Core</strong> de CruiseControl.Net [<a href="http://wauokg.blu.livefilestore.com/y1pQFaMVkn3j8sb-OSgHSIca3tiTEwto5eAVkWX0AZIsdhyAzu8X6kYB62UFr9hrfGPEEDVCscYXQfJkGNLyISUVWXBL0n0dq9q/WildCardPath.zip?download">Download</a>] </li>
</ul>
<p>Una vez actualizado el proyecto <strong>Core</strong> con esta nueva implementación, tendrían que seguir los siguientes pasos para dejarlo con esta nueva funcionalidad</p>
<ol>
<li>Compliar el Core Project </li>
<li>Parar el servicio de CruiseControl.Net (ccservice) </li>
<li>Reemplazar el assembly <strong>ThoughtWorks.CruiseControl.Core </strong>por el Nuevo </li>
<li>Levantar nuevamente el servicio </li>
</ol>
<p>Y eso es todo, a usar wildcards como en MSBuild :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2008/05/25/utilizando-wildcards-de-la-forma-en-cruisecontrolnet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Microsoft Source Analysis for C# 4.2 publicado</title>
		<link>http://www.computerapia.com/index.php/2008/05/25/microsoft-source-analysis-for-c-42-publicado/</link>
		<comments>http://www.computerapia.com/index.php/2008/05/25/microsoft-source-analysis-for-c-42-publicado/#comments</comments>
		<pubDate>Sun, 25 May 2008 03:41:00 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[Code Quality]]></category>

		<category><![CDATA[MSBuild]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2008/05/25/microsoft-source-analysis-for-c-42-publicado/</guid>
		<description><![CDATA[English Version
Microsoft ha publicado una gran herramienta llamada Microsoft Source Analysis for C#, conocida también como StyleCop.
Esta herramienta nos permite controlar y mejorar la calidad del código que escribimos. Esta totalmente integrada con Visual Studio, lo que quiere decir que con un simple click derecho en nuestra solución, proyecto o file, podemos comprobar nuestro código [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://blogs.southworks.net/jpgarcia/2008/05/25/microsoft-source-analysis-for-c-42-was-published/" target="_blank">English Version</a></p>
<p>Microsoft <a href="http://code.msdn.microsoft.com/sourceanalysis" target="_blank">ha publicado</a> una gran herramienta llamada <strong>Microsoft Source Analysis for C#</strong>, conocida también como <strong>StyleCop</strong>.</p>
<p>Esta herramienta nos permite controlar y mejorar la calidad del código que escribimos. Esta totalmente integrada con Visual Studio, lo que quiere decir que con un simple click derecho en nuestra solución, proyecto o file, podemos comprobar nuestro código teniendo en cuenta las mejores prácticas definidas en una serie de reglas como se muestra a continuación.</p>
<p>Pueden encontrar una descripción mas detallada (inglés) en el siguiente post: <a href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx" target="_blank">Announcing the release of Microsoft Source Analysis for C#</a> y descargarse el instalador desde <a href="http://code.msdn.microsoft.com/sourceanalysis/Release/ProjectReleases.aspx" target="_blank">aquí</a>.</p>
<p><img alt="" src="http://yauykg.blu.livefilestore.com/y1pe7Q3tmlVXP5WbJ-VHlcPtOO6pcgJQ4O0O666njmu0CL82-I4crAoGjSc6JmBuqXAWdD4tYWHOepWVE376B9oEQ/runningSourceAnalysis.png" /></p>
<p>Otra de las opciones que nos brinda esta herramienta, es la posibilidad de personalizar qué reglas van a ser ejecutadas, utilizando la configuración que viene integrada en la UI.</p>
<p><img alt="" src="http://yauykg.blu.livefilestore.com/y1pe7Q3tmlVXP4EqzwXIlEHe7drC11rByoy2ZSwPu6MUJNa3DsJVs4vs3kRFH8Gu5AuNhZNAVGJaU9igixAZ8hoSw/configuringSourceAnalysis.png" /></p>
<p>Por último, otra punto importante, es que nos permite integrar este chequeo en nuestro proceso de build por medio de <strong>MSBuild</strong>. Les recomiendo este <a href="http://blogs.msdn.com/sourceanalysis/pages/source-analysis-msbuild-integration.aspx" target="_blank">blog post</a> (inglés) de <strong>Jason Allor&#8217;s</strong> en la página de <a href="http://blogs.msdn.com/sourceanalysis/" target="_blank">Source Analysis</a> donde él explica cómo hacerlo.</p>
<p>Y otro <a href="http://blogs.msdn.com/msbuild/archive/2008/05/23/microsoft-source-analysis-releases-to-web.aspx" target="_blank">post</a> intereando del <a href="http://blogs.msdn.com/msbuild/default.aspx" target="_blank">MSBuild Team Blog</a> , donde anuncian este release.</p>
<p>Disfrutenlo y diganle adios a los documentos con estándares de código :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2008/05/25/microsoft-source-analysis-for-c-42-publicado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ASP.Net MVC Conferencia Online en MSDN</title>
		<link>http://www.computerapia.com/index.php/2008/05/13/aspnet-mvc-conferencia-online-en-msdn/</link>
		<comments>http://www.computerapia.com/index.php/2008/05/13/aspnet-mvc-conferencia-online-en-msdn/#comments</comments>
		<pubDate>Tue, 13 May 2008 03:18:00 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[.NET Framework 3.5]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[ASP.Net MVC]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2008/05/13/aspnet-mvc-conferencia-online-en-msdn/</guid>
		<description><![CDATA[English Version
Este martes (13 de Mayo de 2008) Matias Woloski y yo, dimos un webcast acerca del framework de ASP.Net MVC para la comunidad Hispana.
Quiero agradecer a todos por haber participado de la charla y espero que continuemos dado más de este tipo de charlas con Microsoft sobre las últimas tecnologías.
Como les prometí, acá les [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://blogs.southworks.net/jpgarcia/2008/05/13/aspnet-mvc-online-conference-on-msdn/" target="_blank">English Version</a></p>
<p>Este martes (13 de Mayo de 2008) <a title="Matias Woloski&#39;s blog" href="/blogs/matiaswoloski/" target="_blank">Matias Woloski</a> y yo, dimos un webcast acerca del framework de ASP.Net MVC para la comunidad Hispana.</p>
<p>Quiero agradecer a todos por haber participado de la charla y espero que continuemos dado más de este tipo de charlas con Microsoft sobre las últimas tecnologías.</p>
<p>Como les prometí, acá les dejo varias versiones del codigo fuente de la aplicación que mostramos en la demo:</p>
<ul>
<li>Translator Demo [MVC Preview 2 (original)] : <a href="http://wauokg.blu.livefilestore.com/y1pe7Q3tmlVXP6O4i4l0hvYAw7x60asVRqgmKKwDzdq4isO7Ho2mnxFS5ZqDBlh7p7l4nhP0JxMN-Yf7M2w3gihhA/TranslatorDemo.zip?download" target="_blank">Download</a> </li>
<li>Translator Demo [MVC Preview 2 + TDD (usando MoQ) + WCF Services] : <a href="http://wauokg.blu.livefilestore.com/y1pe7Q3tmlVXP43sbLUS38TppbSicjfnUoe3lYkixJLMHkDDMhQziOaWNZdO4KuuSh8juXe-rQ_JHeADPCrytpEQQ/TranslatorDemo_Prev2.zip?download" target="_blank">Download</a> </li>
<li>Translator Demo [MVC Preview 3 + TDD (usando MoQ) + WCF Services] : <a href="http://wauokg.blu.livefilestore.com/y1pe7Q3tmlVXP6TQq9a4BPUPwImIz6wiCFXZ9K-wBz4TkAObFATJnyAZpoU0QTmwkvjmGGT46XifzjMFG5zrwAcYA/TranslatorDemo_Prev3.zip?download" target="_blank">Download</a> </li>
</ul>
<p>Espero que estos ejemplos les sean de utilidad, y cualquier comentario o duda que tengan, pueden consultarme dejando un comentario en este blog.</p>
<p>Para saber más sobre los cambios en la versión 3 les recomiendo vistar este post de ScottGu. <a title="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx">http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2008/05/13/aspnet-mvc-conferencia-online-en-msdn/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como obtener el testId generado por Visual Studio en un archivo .loadtest</title>
		<link>http://www.computerapia.com/index.php/2007/10/17/como-obtener-el-testid-generado-por-visual-studio-en-un-archivo-loadtest/</link>
		<comments>http://www.computerapia.com/index.php/2007/10/17/como-obtener-el-testid-generado-por-visual-studio-en-un-archivo-loadtest/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 17:16:35 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2007/10/21/como-obtener-el-testid-generado-por-visual-studio-en-un-archivo-loadtest/</guid>
		<description><![CDATA[English Version
Durante estos d&#xED;as hemos estado trabajando en Southworks haciendo una herramienta para automatizar la ejecucion de load tests.
El objetivo era parsear el archivo .loadtest, basandonos en un template, que estaba configurado para un escenario en particular con un set de counters. Una vez parseado este template ya estamos listos para agregar el nodo TestMix [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://staff.southworks.net/blogs/jpgarcia/archive/2007/10/17/How-to-get-the-testId-generated-by-Visual-Studio-in-a-.loadtest-file.aspx" target="_blank">English Version</a></p>
<p>Durante estos d&#xED;as hemos estado trabajando en <strong>Southworks</strong> haciendo una herramienta para automatizar la ejecucion de load tests.</p>
<p>El objetivo era parsear el archivo .loadtest, basandonos en un template, que estaba configurado para un escenario en particular con un set de counters. Una vez parseado este template ya estamos listos para agregar el nodo <em>TestMix</em> y un nodo <em>TestProfile</em> por cada test que deseamos ejecutar, los cuales se encuentran definidos en el assembly del loadtest.</p>
<h2>El obst&#xE1;culo</h2>
<p>En el momento de crear el nodo <em>TestProfile</em>, nos dimos cuenta que cada unit test ten&#xED;a un id especifico (representado por un identificador &#xFA;nico a.k.a. Guid). Lo que no sab&#xED;amos hasta ejecutar el load test, era que &#xE9;ste identificador era generado din&#xE1;micamente por Visual Studio.</p>
<p>Intentamos descubrir de qu&#xE9; forma estos identificadores se generaban usando reflector con varios assemblies de Visual Studio pero no tuvimos suerte.</p>
<h2>Una posible soluci&#xF3;n</h2>
<p>Buscando en internet, despu&#xE9;s de un buen rato, encontr&#xE9; este <a href="http://www.breaman.net/blog/default,month,2006-10.aspx" target="_blank">post</a>, en el que el autor mostraba de qu&#xE9; forma se pod&#xED;a calcular este id:</p>
<p>
<div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:f3e84e84-dad6-4ba8-b42d-d7dee368dc9a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="background-color:White;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><span style="color: #0000FF; ">private</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> Guid GetGuidFromString(</span><span style="color: #0000FF; ">string</span><span style="color: #000000; "> value)
{
    SHA1CryptoServiceProvider provider </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> SHA1CryptoServiceProvider();
    </span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[] buffer1 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> provider.ComputeHash(Encoding.Unicode.GetBytes(value));
    </span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[] buffer2 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[</span><span style="color: #000000; ">0x10</span><span style="color: #000000; ">];
    Array.Copy(buffer1, buffer2, </span><span style="color: #000000; ">0x10</span><span style="color: #000000; ">);
    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> Guid(buffer2);
}
</span></div>
</pre>
</div>
<p>Con esta funci&#xF3;n ya podemos recorrer todo el assembly en busca de los m&#xE9;todos de tipo test y asignarles el id correcto, como muestro a continuaci&#xF3;n:</p>
<p><div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:9901a7e1-a489-4dad-8a08-81c8aedab087" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="background-color:White;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><span style="color: #0000FF; ">private</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> IList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">TestEntry</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "> GetUnitTests()
{
    IList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">TestEntry</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "> unitTests </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">TestEntry</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();
    Assembly assembly </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Assembly.LoadFrom(</span><span style="color: #000000; ">&quot;</span><span style="color: #000000; ">Tests\\PerformanceTests.dll</span><span style="color: #000000; ">&quot;</span><span style="color: #000000; ">);
    Type[] assemblyTypes </span><span style="color: #000000; ">=</span><span style="color: #000000; "> assembly.GetTypes(); 

    </span><span style="color: #0000FF; ">foreach</span><span style="color: #000000; "> (Type type </span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> assemblyTypes)
    {
        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (type.IsClass </span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; "> type.GetCustomAttributes(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">(TestClassAttribute), </span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">).Length </span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)
        {
            MethodInfo[] info </span><span style="color: #000000; ">=</span><span style="color: #000000; "> type.GetMethods(); 

            </span><span style="color: #0000FF; ">foreach</span><span style="color: #000000; "> (MethodInfo m </span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> info)
            {
                </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (m.GetCustomAttributes(</span><span style="color: #0000FF; ">typeof</span><span style="color: #000000; ">(TestMethodAttribute), </span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">).Length </span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)
                {
                    Guid testGuid </span><span style="color: #000000; ">=</span><span style="color: #000000; "> GetGUIDFromString(type.FullName </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">&quot;</span><span style="color: #000000; ">.</span><span style="color: #000000; ">&quot;</span><span style="color: #000000; "> </span><span style="color: #000000; ">+</span><span style="color: #000000; "> m.Name);
                    unitTests.Add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> TestEntry(testGuid, m.Name));
                }
            }
        }
    } 

    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> unitTests;
}
</span></div>
</pre>
</div>
<p>Espero que este post les sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2007/10/17/como-obtener-el-testid-generado-por-visual-studio-en-un-archivo-loadtest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WSDL Viewer</title>
		<link>http://www.computerapia.com/index.php/2007/08/21/wsdl-viewer/</link>
		<comments>http://www.computerapia.com/index.php/2007/08/21/wsdl-viewer/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 17:44:03 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2007/10/21/wsdl-viewer/</guid>
		<description><![CDATA[English Version
Hace unos d&#xED;as descubr&#xED; una herramienta muy pr&#xE1;ctica en el website de .NetFramework 3. &#xC9;sta, nos ayuda a visualizar y comprender, de una forma muy simple, la metadata (WSDL) que expone un servicio.
La pueden descargar desde aqu&#xED;.
 
Espero que les sirva.
]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://staff.southworks.net/blogs/jpgarcia/archive/2007/08/16/WSDL-Viewer.aspx" target="_blank">English Version</a></p>
<p align="left">Hace unos d&#xED;as descubr&#xED; una herramienta muy pr&#xE1;ctica en el website de <a href="http://www.netfx3.com/" target="_blank">.NetFramework 3</a>. &#xC9;sta, nos ayuda a visualizar y comprender, de una forma muy simple, la metadata (WSDL) que expone un servicio.</p>
<p align="left">La pueden descargar desde <a href="http://wcf.netfx3.com/files/folders/development_tools/entry5214.aspx" target="_blank">aqu&#xED;</a>.</p>
<p align="left"><a href="http://www.computerapia.com/wp-content/upload/WSDLViewer_CCF7/WSDLViewer.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="276" alt="WSDLViewer" src="http://www.computerapia.com/wp-content/upload/WSDLViewer_CCF7/WSDLViewer_thumb.jpg" width="461" border="0" /></a> </p>
<p align="left">Espero que les sirva.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2007/08/21/wsdl-viewer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tres canteros</title>
		<link>http://www.computerapia.com/index.php/2007/05/23/tres-canteros/</link>
		<comments>http://www.computerapia.com/index.php/2007/05/23/tres-canteros/#comments</comments>
		<pubDate>Wed, 23 May 2007 00:51:01 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2007/05/23/tres-canteros/</guid>
		<description><![CDATA[English Version
Tres canteros al pie de una catedral, que est&#xE1;n haciendo el mismo trabajo: tallar piedras.
Un hombre se acerca al primero y le dice &#34;&#xBF;Qu&#xE9; haces?&#34;
El cantero le dice: &#34;Tallo piedras&#34; y la hosquedad de su mirada parece que &#34;&#xBF;No lo est&#xE1; viendo?&#34;
El segundo responde diciendo: &#34;Me gano la vida&#34; y con su gesto de [...]]]></description>
			<content:encoded><![CDATA[<p align="right"><a href="http://staff.southworks.net/blogs/jpgarcia/archive/2007/09/08/The-three-quarrymen.aspx" target="_blank">English Version</a></p>
<p>Tres canteros al pie de una catedral, que est&#xE1;n haciendo el mismo trabajo: tallar piedras.</p>
<p>Un hombre se acerca al primero y le dice &quot;&#xBF;Qu&#xE9; haces?&quot;</p>
<p>El cantero le dice: &quot;Tallo piedras&quot; y la hosquedad de su mirada parece que &quot;&#xBF;No lo est&#xE1; viendo?&quot;</p>
<p>El segundo responde diciendo: &quot;Me gano la vida&quot; y con su gesto de resignaci&#xF3;n parece a&#xF1;adir: &quot;Es duro, &#xBF;sabe usted?&quot;</p>
<p>El tercer cantero, al escuchar la pregunta, levanta la cabeza, mira a lo alto, le brillan los ojos y dice: &quot;Estoy construyendo una catedral&quot;</p>
<p>Caigamos en la cuenta de que la misma acci&#xF3;n puede tener distintos niveles de significado, sin embargo, es el tercero quien indudablemente hace su trabajo buscando la excelencia, porque ve en el mismo una finalidad m&#xE1;s elevada.</p>
<p><em>Fuente</em>: Las causas del fracaso de las empresas (como aprender de la experiencia ajena)    <br />Enrique Zamorano</p>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2007/05/23/tres-canteros/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Enterprise Library 3.0 "Liberada"</title>
		<link>http://www.computerapia.com/index.php/2007/04/06/enterprise-library-30-liberada/</link>
		<comments>http://www.computerapia.com/index.php/2007/04/06/enterprise-library-30-liberada/#comments</comments>
		<pubDate>Fri, 06 Apr 2007 20:34:08 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[.NET Framework 3.0]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2007/04/06/enterprise-library-30-liberada/</guid>
		<description><![CDATA[La gente de Patterns &#38; Practices han liberado la version 3.0 de la ya conocida Enterprise Library, y puden descargarla desde &#233;ste enlace.
Esta versi&#243;n incluye:

Caching Application Block
Cryptography Application Block
Data Access Application Block
Exception Handling Application Block
Logging Application Block
Policy Injection Application Block
Security Application Block and Validation Application Block

]]></description>
			<content:encoded><![CDATA[<p>La gente de <a title="Patterns &amp; Practices" href="http://msdn.microsoft.com/practices/" target="_blank">Patterns &amp; Practices</a> han liberado la version 3.0 de la ya conocida Enterprise Library, y puden descargarla desde <a title="Enterprise Library 3.0 Download" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=62ef5f79-daf2-43af-9897-d926f03b9e60&amp;DisplayLang=en" target="_blank">&eacute;ste enlace</a>.</p>
<p>Esta versi&oacute;n incluye:</p>
<ul>
<li>Caching Application Block</li>
<li>Cryptography Application Block</li>
<li>Data Access Application Block</li>
<li>Exception Handling Application Block</li>
<li>Logging Application Block</li>
<li>Policy Injection Application Block</li>
<li>Security Application Block and Validation Application Block</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2007/04/06/enterprise-library-30-liberada/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Resultados de Gadgetizate</title>
		<link>http://www.computerapia.com/index.php/2007/04/03/resultados-de-gadgetizate/</link>
		<comments>http://www.computerapia.com/index.php/2007/04/03/resultados-de-gadgetizate/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 01:23:13 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Resultados Futbol]]></category>

		<guid isPermaLink="false">http://www.computerapia.com/index.php/2007/04/03/resultados-de-gadgetizate/</guid>
		<description><![CDATA[Al final no tuve tiempo de poder escribir nada, como ya es costumbre :), sobre como fue el desarrollo del Gadget que hab&#237;a creado para el concurso.
El concurso termin&#243; y qued&#233; en la 4ta posici&#243;n, algo es algo.
Pensaba escribir un poco m&#225;s acerca de c&#243;mo fue el proceso de la elecci&#243;n y las votaciones de [...]]]></description>
			<content:encoded><![CDATA[<p>Al final no tuve tiempo de poder escribir nada, como ya es costumbre :), sobre como fue el desarrollo del Gadget que hab&iacute;a creado para el concurso.</p>
<p>El concurso termin&oacute; y qued&eacute; en la <strong>4ta posici&oacute;n</strong>, algo es algo.</p>
<p>Pensaba escribir un poco m&aacute;s acerca de c&oacute;mo fue el proceso de la elecci&oacute;n y las votaciones de los gadgets ganadores pero prefiero dedicar el tiempo leyendo y aprendiendo otras cosas.</p>
<p>Lo &uacute;nico que quiero destacar es la amabilidad y la atenci&oacute;n de uno, sino el &uacute;nico, organizador de &eacute;ste concurso <a href="http://blogs.clearscreen.com/migs/" target="_blank">Miguel Jimenez Antelo</a> quien respondi&oacute; a todas mis dudas, acerca de lo que dejo picando en el punto anterior.</p>
<p>Esperemos que en los pr&oacute;ximos concursos, tal y como coincidimos con Miguel, se decidan los ganadores por un sistema de elecci&oacute;n y no de votaci&oacute;n p&uacute;blica ya que esto genera muchas pol&eacute;micas y la cosa nunca queda clara.</p>
<p>Espero disfrutar dentro de poco la licencia y los libros que he ganado�:)</p>
<ul>
<li>Licencia de ComponentOne Studio Express</li>
<li>Libro ISBN:978-84-415-2021-9 Visual Basic 2005</li>
<li>Libro ISBN:978-84-415-2125-4 Superutilidades Hacker</li>
<li>Libro ISBN:978-84-415-1851-3 Hacking con Google</li>
<li>Libro ISBN:978-84-415-2131-5 Bases de datos con SQL Server 2005</li>
<li>Libro ISBN:978-84-415-2035-6 Aprende SQL</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.computerapia.com/index.php/2007/04/03/resultados-de-gadgetizate/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
