<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4478223387355016990</id><updated>2011-11-27T17:21:38.661-06:00</updated><category term='TIp'/><category term='.NET 4.0'/><category term='Framework'/><category term='.NET'/><category term='C# 4.0'/><title type='text'>Code Blog</title><subtitle type='html'>Blog sobre tips e ideas sobre Programación en .NET</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://adlcodeblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://adlcodeblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>adl</name><uri>http://www.blogger.com/profile/00902625433397402204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_2sc2npPI7UI/R8Cbm9MW_0I/AAAAAAAABDY/uGKKQtsX0o8/S220/hackergotchi.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4478223387355016990.post-2715967575875882699</id><published>2009-07-31T19:12:00.000-05:00</published><updated>2009-07-31T19:12:13.946-05:00</updated><title type='text'>Viernes: Code Tips</title><content type='html'>&lt;b&gt;Tip #1&lt;/b&gt;: Como saber con que usuario estamos corriendo:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WinForms&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Security.Principal;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;...&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;...&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  WindowsIdentity identity = WindowsIdentity.GetCurrent();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  &lt;span class="kwrd"&gt;string&lt;/span&gt; userName = identity.Name;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Web&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Security.Principal;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;...&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;...&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;   IPrincipal userPrincipal = HttpContext.Current.User;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;   WindowsIdentity identity = userPrincipal.Identity &lt;span class="kwrd"&gt;as&lt;/span&gt; WindowsIdentity;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;   &lt;span class="kwrd"&gt;string&lt;/span&gt; userName = identity.Name;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tip #2:&lt;/b&gt; Como imprimir los atributos y sus valores (getters/setters) de una clase usando &lt;i&gt;Reflection&lt;/i&gt;:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Despliega los atributos de una clase y su valor&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; desplegarAtributos(&lt;span class="kwrd"&gt;object&lt;/span&gt; clase)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(clase != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                Type objectType = clase.GetType();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                PropertyInfo[] propertyInfo = objectType.GetProperties();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                Console.WriteLine();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                Console.WriteLine(&lt;span class="str"&gt;"\tNombre de la clase: {0}"&lt;/span&gt;, clase);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                Console.WriteLine();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var info &lt;span class="kwrd"&gt;in&lt;/span&gt; propertyInfo)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;object&lt;/span&gt; foo = info.GetValue(clase, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                    Console.WriteLine(&lt;span class="str"&gt;"\t\t{0} = {1}"&lt;/span&gt;, info.Name, foo);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4478223387355016990-2715967575875882699?l=adlcodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adlcodeblog.blogspot.com/feeds/2715967575875882699/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/viernes-code-tips.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/2715967575875882699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/2715967575875882699'/><link rel='alternate' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/viernes-code-tips.html' title='Viernes: Code Tips'/><author><name>adl</name><uri>http://www.blogger.com/profile/00902625433397402204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_2sc2npPI7UI/R8Cbm9MW_0I/AAAAAAAABDY/uGKKQtsX0o8/S220/hackergotchi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4478223387355016990.post-8032197676455701198</id><published>2009-07-28T18:41:00.009-05:00</published><updated>2009-07-29T09:41:33.856-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><title type='text'>Regresando a lo básico: Versiones de .NET</title><content type='html'>&lt;div&gt;&lt;div id="bo6o" style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2sc2npPI7UI/SnBeUd6rfzI/AAAAAAAACZw/2ENvyT_WZ8U/s1600-h/dotnetfrmk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_2sc2npPI7UI/SnBeUd6rfzI/AAAAAAAACZw/2ENvyT_WZ8U/s320/dotnetfrmk.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Una de las cosas que confunen a varios de los desarolladeres de .NET/C# es la nomenclatura de versionamiento que utiliza Microsoft para el framework de .NET.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Algunas personas me han preguntado sobre 'la versión' de .NET y sus diferencias, y decidi escribir esta entrada de blog.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Para poder comprender la nomenclatura de .NET, tenemos que entender las piezas individuales por las cual esta conformado el framework:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;El framework de .NET esta conformado por:&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;CLR: Common Language Runtime&lt;/b&gt;. la maquina virtual que corre nuestros programas, el corazón de .NET&lt;/li&gt;&lt;li&gt;&lt;b&gt;Compilador de C#&lt;/b&gt;: Convierte nuestro codigo en binarios/assemblies para correr bajo el CLR.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Clases base&lt;/b&gt;: forma el API de programacion core de .NET&lt;/li&gt;&lt;li&gt;&lt;b&gt;WinForms/ASP.NET/ADO.NET&lt;/b&gt;: APIs principales que corren encima de las clases base.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;La versión 1.1 de .NET por ejemplo, esta compuesta por versiones del CLR, Compilador, Clases base y SWF/ASP.NET/ADO.NET&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;La versión 2.0 de .NET también consta de versiones nuevas de los componentes arriba mencionados. Es por eso que decimos que .NET 1.1 y .NET 2.0 son versiones diferentes.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;Ahora, aquí es donde se pone interesante. La version 3.0 de .NET esta conformada por los siguientes componetes:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;el CLR de .NET 2.0&lt;/li&gt;&lt;li&gt;el compilador de C# de .NET 2.0&lt;/li&gt;&lt;li&gt;las clases base de .NET 2.0&lt;/li&gt;&lt;li&gt;WinForms/ASP.NET/ADO.NET de .NET 2.0&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;y &amp;nbsp;tres nuevos APIs principales:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;WCF&lt;/b&gt;: Windows Communication Foundation aka Indigo&lt;/li&gt;&lt;li&gt;&lt;b&gt;WPF&lt;/b&gt;: Windows Presentation Foundation aka Avalon&lt;/li&gt;&lt;li&gt;&lt;b&gt;WF&lt;/b&gt;: Windows Workflow&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div id="ktkr" style="text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=ajkjvhghfx5h_91fgqd64hc_b" style="height: 249px; width: 450px;" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Entonces como podemos ver, una nueva versión del framework no necesariamente cambia la versión del CLR o del compilador!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Es por eso que el cambio de .NET 1.1 a .NET 2.0 fue mayor que el cambio de .NET 2.0 a .NET 3.0&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;table bgcolor="#cfe2f3" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" class="" id="t-bp"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;" width="16.666666666666668%"&gt;&lt;b&gt;Versión del Framework&lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;" width="16.666666666666668%"&gt;&lt;b&gt;Numero de Versión&lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;" width="16.666666666666668%"&gt;&lt;b&gt;Vistual Studio&lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;" width="16.666666666666668%"&gt;&lt;b&gt;Incluida en Windows&lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;" width="16.666666666666668%"&gt;&lt;b&gt;CLR&lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;" width="16.666666666666668%"&gt;&lt;b&gt;C#&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;1.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;1.0.3705.0&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Visual Studio .NET&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;1.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;1.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;1.1&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;1.1.4322.573&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Visual Studio .NET 2003&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Windows Server 2003, XP SP2&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;1.1&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;1.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;2.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;2.0.50727.42&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Visual Studio 2005&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;2.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;2.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;3.0.4506.30&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Windows Vista, Windows Server 2008&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;2.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;2.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;3.5&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;3.5.21022.8&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Visual Studio 2008&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Windows 7, Windows Server 2008 R2&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;2.0&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;4.0 Beta1&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Visual Studio 2010 Beta&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;4.0?&lt;/span&gt;&lt;/td&gt;&lt;td width="16.666666666666668%"&gt;&lt;span style="font-size: x-small;"&gt;4.0?&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Como podemos ver, la versión del CLR (la maquina virtual que corre nuestras aplicaciones) no ha cambiado desde .NET 2.0&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;Si, es muy confuso! La buena noticia es que con .NET 4.0, Microsoft parece que va a estandarizar de nuevo las versiones del framework, CLR/DLR, y compilador, todo esto en una nueva versión de VS.NET 2010&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Referencias:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.hanselman.com/blog/HowToSetAnIISApplicationOrAppPoolToUseASPNET35RatherThan20.aspx"&gt;http://www.hanselman.com/blog/HowToSetAnIISApplicationOrAppPoolToUseASPNET35RatherThan20.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/.NET_Framework"&gt;http://en.wikipedia.org/wiki/.NET_Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2008/04/dotnet-framework-versions"&gt;http://www.infoq.com/news/2008/04/dotnet-framework-versions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/rmbyers/archive/2008/10/26/clr-4-0-advancements-in-diagnostics.aspx"&gt;http://blogs.msdn.com/rmbyers/archive/2008/10/26/clr-4-0-advancements-in-diagnostics.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4478223387355016990-8032197676455701198?l=adlcodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adlcodeblog.blogspot.com/feeds/8032197676455701198/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/versiones-de-net.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/8032197676455701198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/8032197676455701198'/><link rel='alternate' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/versiones-de-net.html' title='Regresando a lo básico: Versiones de .NET'/><author><name>adl</name><uri>http://www.blogger.com/profile/00902625433397402204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_2sc2npPI7UI/R8Cbm9MW_0I/AAAAAAAABDY/uGKKQtsX0o8/S220/hackergotchi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2sc2npPI7UI/SnBeUd6rfzI/AAAAAAAACZw/2ENvyT_WZ8U/s72-c/dotnetfrmk.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4478223387355016990.post-2071855656120672945</id><published>2009-07-27T15:41:00.003-05:00</published><updated>2009-07-27T15:48:06.192-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C# 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET 4.0'/><title type='text'>Nuevos features the C# 4.0 (incluido en .NET 4.0)</title><content type='html'>Hay dos features nuevos de C# 4.0 que en mi&amp;nbsp;opinión&amp;nbsp;son muy&amp;nbsp;útiles: &lt;i&gt;Optional Parameters&lt;/i&gt; y &lt;i&gt;Named Parameters&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Antes, si&amp;nbsp;queríamos&amp;nbsp;tener un&amp;nbsp;método&amp;nbsp;que aceptara diferente numero de&amp;nbsp;parámetros&amp;nbsp;teníamos&amp;nbsp;que hacer sobrecarga (&lt;i&gt;overload&lt;/i&gt;) del&amp;nbsp;método:&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;1:  // Crea un respaldo del archivo, nombres default&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;2:  private void CrearArchivoRespaldo() &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;3:  {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;4:      //..&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;5:  }&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;1:  //Crea respaldo del archivo de entrada, especificando el nombre del respaldo&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;2:  private void CrearArchivoRespaldo(string archivoRespaldo)&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;3:  {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;4:      //..&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;5:  }&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;1:  //Crea un respaldo del archivo de entrada, especificando el nombre del archivo de&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;2:  //entrada y nombre del archivo de respaldo&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;3:  private void CrearArchivoRespaldo(string archivoOriginal,&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;4: string archivoRespaldo)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;5:  {&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;6:      //..&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;7:  }&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Terminábamos&amp;nbsp;con varios&amp;nbsp;métodos, y mas&amp;nbsp;código&amp;nbsp;que mantener.&lt;br /&gt;&lt;br /&gt;Me ha tocado ver un&amp;nbsp;método&amp;nbsp;(codigo &lt;i&gt;legacy&lt;/i&gt;) sobrecargado mas de 18 veces, con diferentes listas de&amp;nbsp;parámetros&amp;nbsp;y diferente orden!&lt;br /&gt;&lt;br /&gt;En C# 4.0 podemos utilizar&amp;nbsp;parámetros&amp;nbsp;opcionales en nuestros&amp;nbsp;métodos.&lt;br /&gt;&lt;br /&gt;Ahora, podemos nombrar nuestros&amp;nbsp;parámetros&amp;nbsp;de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;1:  //Crea un archivo de respaldo&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;2:  private void CrearArchivoRespaldo(string archivoEntrada =&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;3: "c:\\input.txt", string archivoRespaldo="c:\\archivo.txt.bak)&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;4:  {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;5:      //..&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;6:  }&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Al mandar llamar &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;CrearArchivoRespaldo(&lt;/b&gt;)&lt;/span&gt; sin parametros, tomara los valores asignados.&lt;br /&gt;&lt;br /&gt;También&amp;nbsp;podemos llamar &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;CrearArchivoRespaldo()&lt;/b&gt;&lt;/span&gt; de la siguente manera:&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;1:  CrearArchivoRespaldo(archivoEntrada:"C:=\\foo.txt",&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span style="color: #0b5394;"&gt;archivoRespaldo:"c:\\bar.bak")&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Como podemos ver, estamos utilizando el nombre del&amp;nbsp;parámetro&amp;nbsp;en la asignación.&lt;br /&gt;&lt;br /&gt;De esta manera nos ahorramos la sobrecarga de los&amp;nbsp;métodos, y ganamos un poco de claridad al declarar los nombres de nuestros&amp;nbsp;parámetros&amp;nbsp;al llamar el&amp;nbsp;método.&lt;br /&gt;&lt;br /&gt;Este es uno de mis features favoritos de C# 4.0 ! :-)&lt;br /&gt;&lt;br /&gt;Para mayor referencia: &amp;nbsp;&lt;a href="http://code.msdn.microsoft.com/csharpfuture/Release/ProjectReleases.aspx?ReleaseId=1686"&gt;http://code.msdn.microsoft.com/csharpfuture/Release/ProjectReleases.aspx?ReleaseId=1686&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4478223387355016990-2071855656120672945?l=adlcodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adlcodeblog.blogspot.com/feeds/2071855656120672945/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/nuevos-features-c-40-incluido-en-net-40.html#comment-form' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/2071855656120672945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/2071855656120672945'/><link rel='alternate' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/nuevos-features-c-40-incluido-en-net-40.html' title='Nuevos features the C# 4.0 (incluido en .NET 4.0)'/><author><name>adl</name><uri>http://www.blogger.com/profile/00902625433397402204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_2sc2npPI7UI/R8Cbm9MW_0I/AAAAAAAABDY/uGKKQtsX0o8/S220/hackergotchi.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4478223387355016990.post-864701948655241709</id><published>2009-07-26T16:18:00.004-05:00</published><updated>2009-07-28T09:48:34.345-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TIp'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Como detectar la versión instalada de .NET</title><content type='html'>Hace poco me vi en la necesidad de verificar la&amp;nbsp;versión&amp;nbsp;instalada de .NET &amp;nbsp;y ver si se encontraba instalado el &lt;i&gt;Service Pack 2&lt;/i&gt; para .NET 2.0.&lt;br /&gt;&lt;br /&gt;La manera recomendada es buscando la siguiente llave del registry:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: navy; font-family: Arial; font-size: x-small;"&gt;&lt;span style="color: navy; font-family: Arial; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-family: Consolas; font-size: x-small;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10.5pt;"&gt;&lt;span style="background-color: #fff2cc;"&gt;HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\SP&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas; font-size: medium;"&gt;&lt;span style="font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2sc2npPI7UI/SmzCcf-0O0I/AAAAAAAACZk/hj7UfTKtxLw/s1600-h/regedit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_2sc2npPI7UI/SmzCcf-0O0I/AAAAAAAACZk/hj7UfTKtxLw/s400/regedit.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Consolas; font-size: medium;"&gt;&lt;span style="font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: medium;"&gt;&lt;span style="font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Con el siguiente codigo podemos obtener la version y Service Pack:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Win32;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;...   &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;...&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; name = &lt;span class="str"&gt;@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727\";&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;   &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;RegistryKey subKey = Registry.LocalMachine.OpenSubKey(name);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;   &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;var version = subKey.GetValue("&lt;/span&gt;Version&lt;span class="str"&gt;").ToString();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;var servicePack = subKey.GetValue("&lt;/span&gt;SP").ToString();&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Hay mas&amp;nbsp;información&amp;nbsp;en esta pregunta de &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;&amp;nbsp;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed"&gt;http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4478223387355016990-864701948655241709?l=adlcodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adlcodeblog.blogspot.com/feeds/864701948655241709/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/como-detectar-la-version-instalada-de.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/864701948655241709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/864701948655241709'/><link rel='alternate' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/como-detectar-la-version-instalada-de.html' title='Como detectar la versión instalada de .NET'/><author><name>adl</name><uri>http://www.blogger.com/profile/00902625433397402204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_2sc2npPI7UI/R8Cbm9MW_0I/AAAAAAAABDY/uGKKQtsX0o8/S220/hackergotchi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2sc2npPI7UI/SmzCcf-0O0I/AAAAAAAACZk/hj7UfTKtxLw/s72-c/regedit.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4478223387355016990.post-4473965750514528307</id><published>2009-07-26T15:01:00.002-05:00</published><updated>2009-07-28T09:42:52.251-05:00</updated><title type='text'>Test</title><content type='html'>Esto es una prueba.&lt;br /&gt;&lt;br /&gt;Prueba de codigo:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;1:  &lt;span class="rem"&gt;//Crea respaldo del archivo de entrada, especificando el nombre del respaldo&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;2:  &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CrearArchivoRespaldo(&lt;span class="kwrd"&gt;string&lt;/span&gt; archivoRespaldo)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;3:  {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;4:      &lt;span class="rem"&gt;//..&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;5:  }&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4478223387355016990-4473965750514528307?l=adlcodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adlcodeblog.blogspot.com/feeds/4473965750514528307/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/test.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/4473965750514528307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4478223387355016990/posts/default/4473965750514528307'/><link rel='alternate' type='text/html' href='http://adlcodeblog.blogspot.com/2009/07/test.html' title='Test'/><author><name>adl</name><uri>http://www.blogger.com/profile/00902625433397402204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_2sc2npPI7UI/R8Cbm9MW_0I/AAAAAAAABDY/uGKKQtsX0o8/S220/hackergotchi.jpg'/></author><thr:total>0</thr:total></entry></feed>
