<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Geeks•ms</title><link>http://geeks.ms/blogs/</link><description>Todo lo que los geeks de Windows y .Net tienen que contar</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>SharePoint 2010: Formateando los DateTime, según las regional settings del cliente</title><link>http://geeks.ms/blogs/lmanez/archive/2012/05/25/sharepoint-2010-formateando-los-datetime-seg-250-n-las-regional-settings-del-cliente.aspx</link><pubDate>Fri, 25 May 2012 14:21:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205262</guid><dc:creator>Luis Mañez</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Antes de entrar en materia, vamos a ver el escenario final:&lt;/p&gt;  &lt;p&gt;Lo que pretendemos es que, cuando se muestre la fecha de creación de un ítem de una lista, desde un webpart personalizado (o control, o lo que sea), esa fecha y hora, esté ajustada a la zona horaria del usuario que está viendo la web.&lt;/p&gt;  &lt;p&gt;Lo otro a considerar, es que SharePoint, almacena (en su BBDD) la fecha, en modo &lt;a href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time" target="_blank"&gt;UTC&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Con esto, lo que buscamos es lo siguiente:&lt;/p&gt;  &lt;p&gt;Si el ítem se creó cuando eran las 25/05/2012 18:00 en UTC time, queremos que cuando un usuario ve la web desde, pongamos España, tengamos: 25/05/2012 20:00 (UTC +2). El +2 es ahora, en horario de verano. Fuera del horario de verano, sería: 25/05/2012 19:00 (UTC +1). Y para acabar con el ejemplo, si la web la visita un usuario de Sidney, cuya diferencia horaria con UTC es de +10, pues la fecha hora sería: 26/05/2012 03:00 (es decir, que hemos pasado al día siguiente).&lt;/p&gt;  &lt;p&gt;Pero, ¿Cómo puedo saber la configuración horaria que tiene el PC del usuario?, pues bien, por desgracia, esta información, no la tenemos disponible en las cabeceras HTTP de la petición, por lo que es algo complicadillo.&lt;/p&gt;  &lt;p&gt;Por suerte, podemos enviar código JavaScript al cliente que, en caso de que no bloquee el JavaScript, este código haga:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Consulte la fecha hora del cliente, y extraiga la diferencia horaria, con respecto al UTC&lt;/li&gt;    &lt;li&gt;Cree una cookie, donde se guarde esa diferencia&lt;/li&gt;    &lt;li&gt;Reenvíe la petición al servidor, para que éste recoja la cookie, y calcule la fecha de creación del ítem, según dicho offset con respecto al UTC&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;¿Y cómo hacemos todo eso en SharePoint?&lt;/p&gt;  &lt;p&gt;Existen varias formas para poder inyectar ese BLOCKED SCRIPT Crear un HTTPModule, usar un DelegateControl, y alguna más. Por no hacerlo muy complicado, en este caso, vamos a crear un control, que incluiremos en la MasterPage del site.&lt;/p&gt;  &lt;p&gt;Primero creamos el control de SharePoint:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ClientTimeOffsetUtc : Microsoft.SharePoint.WebControls.SPControl&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Render(System.Web.UI.HtmlTextWriter writer)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//If browser doesn&amp;#39;t support cookies, we do nothing&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (HttpContext.Current.Request.Browser.Cookies)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!ClientTimeUtcCookieExists())&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;             {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;                 writer.RenderBeginTag(&lt;span style="color:#006080;"&gt;&amp;quot;script&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;                 writer.AddAttribute(&lt;span style="color:#006080;"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                 RegisterJavaScriptCookieFunctions(writer);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;                 CreateCookieWithUtcOffset(writer);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;                 writer.RenderEndTag();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;             }   &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         }            &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Write the js Functions needed to get UTC offset in client&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// and generate a cookie whith it&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CreateCookieWithUtcOffset(System.Web.UI.HtmlTextWriter writer)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; jsCreateCookie = CookieHelper.ClientUtcOffset.GetJavaScriptCodeForGetClientUtcOffset();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;         writer.Write(jsCreateCookie);   &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Writes js needed to get client UTC offset and create a cookie whith this Offset&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// This cookie is sending to the server&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RegisterJavaScriptCookieFunctions(System.Web.UI.HtmlTextWriter writer)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;     {            &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; jsFunctions = CookieHelper.ClientUtcOffset.GetJavaScriptCodeForManageCookie();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;         writer.Write(jsFunctions);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum43"&gt;  43:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum44"&gt;  44:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum45"&gt;  45:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum46"&gt;  46:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Returns If cookie ClientTimeUtc exists&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum47"&gt;  47:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum48"&gt;  48:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum49"&gt;  49:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; ClientTimeUtcCookieExists()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum50"&gt;  50:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum51"&gt;  51:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; CookieHelper.ClientUtcOffset.Exists();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum52"&gt;  52:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum53"&gt;  53:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
Sobre el render del Control, lo que primero hacemos, es comprobar si el navegador acepta cookies. Si las acepta, lo siguiente es comprobar si ya hemos creado la cookie. Si ya la hemos creado, luego la usaremos para formatear el DateTime. Si no la hemos creado, registramos el código JavaScript necesario para ello.

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GetJavaScriptCodeForManageCookie()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     StringBuilder jsFunctions = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     jsFunctions.Append(&lt;span style="color:#006080;"&gt;@&amp;quot;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                 function setCookie(cookieName, cookieValue, expiredays) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                     var exdate = new Date();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;                     exdate.setDate(exdate.getDate() + expiredays);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;                     document.cookie = cookieName + &amp;#39;=&amp;#39; + escape(cookieValue) + ((expiredays == null) ? &amp;#39;&amp;#39; : &amp;#39;;expires=&amp;#39; + exdate.toUTCString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;                 }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;                 &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;                 function getUtcOffset() {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                     return (new Date()).getTimezoneOffset();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;                 }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;             &amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; jsFunctions.ToString();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Y aquí el código que invoca la funciones JS&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GetJavaScriptCodeForGetClientUtcOffset()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     StringBuilder jsCode = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     jsCode.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;setCookie(&amp;#39;{0}&amp;#39;, getUtcOffset(), 1);&amp;quot;&lt;/span&gt;, &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                             ApplicationDirectory.Cookies.ClientTimeUtcOffset);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     jsCode.Append(&lt;span style="color:#006080;"&gt;&amp;quot;window.location = window.location&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; jsCode.ToString();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;Fijaros como en el código anterior, estableces el “window.location” a sí mismo. De esta forma recargamos la página, y la cookie llega al servidor.&lt;/p&gt;

&lt;p&gt;Es importante notar que toda la parte de JavaScript, sólo se inserta y utiliza, si no existe la cookie con el Offset del UTC. Así se optimiza el tamaño de página.&lt;/p&gt;

&lt;p&gt;OK, ya tenemos la cookie con el offset, ahora ¿cómo la usamos?&lt;/p&gt;

&lt;p&gt;Primero obtenemos el valor de la cookie:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;.TryParse(&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;      HttpContext.Current.Request.Cookies[&lt;span style="color:#006080;"&gt;&amp;quot;ClientTimeUtcOffset&amp;quot;&lt;/span&gt;].Value,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; offsetCaptured)   &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Asumimos que tenemos una variable DateTime, con la fecha de creación de un ítem de lista de SharePoint. Para aplicar el offset UTC del cliente, hacemos:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; spListItemCreated.ToUniversalTime().AddHours(utcOffset);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Es decir, sumamos/restamos las horas de diferencia horaria.&lt;/p&gt;

&lt;p&gt;Pero, si habías dicho que SP guarda los DateTime en UTC ¿por qué estás pasando el DateTime a ToUniversalTime? pues sencillamente, porque cuando el modelo de objetos de SharePoint, te devuelve el valor de la columna del SPListItem, te lo da aplicando la hora local del servidor, por lo que hay que pedirle, explícitamente, que te dé la hora UTC.&lt;/p&gt;

&lt;p&gt;Con esta técnica, podemos formatear la fecha/hora, según la configuración del cliente. Algo que para soluciones globalizadas, puede ser de gran ayuda.&lt;/p&gt;

&lt;p&gt;Espero que os sirva.&lt;/p&gt;

&lt;p&gt;Un saludo!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205262" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lmanez/archive/tags/Sharepoint+2010/default.aspx">Sharepoint 2010</category></item><item><title>5º Aniversario de la Creación de Second Nug</title><link>http://geeks.ms/blogs/secondnug/archive/2012/05/25/5-186-aniversario-de-la-creaci-243-n-de-second-nug.aspx</link><pubDate>Fri, 25 May 2012 12:08:31 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205266</guid><dc:creator>Fran Díaz</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/cabeceraportal_5F00_maika_5F00_141338A2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="cabeceraportal_maika" border="0" alt="cabeceraportal_maika" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/cabeceraportal_5F00_maika_5F00_thumb_5F00_690B24CF.png" width="417" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cinco años han pasado ya desde que Second Nug se fundó como Grupo de Usuarios, cinco años en los que nos ha dado tiempo a organizar la friolera de 104 eventos, 80 de Desarrollo y 24 de la ya escindida rama de IT Pro, y donde os hemos ofrecido tanto eventos sobre las últimas novedades en tecnología como eventos muy enfocados a todos los niveles y ámbitos.&lt;/p&gt;  &lt;p&gt;Queremos sobre todo agradecer a todos los asistentes a nuestros eventos el apoyo que nos dais día tras día, es por vosotros que seguimos y seguiremos aquí organizando más y más eventos. Sois el verdadero motor que hace funcionar a Second Nug.&lt;/p&gt;  &lt;p&gt;Nos gustaría compartir con vosotros algunos datos, de los cuales sin duda sois los protagonistas, y que nos siguen sorprendiendo día a día:&lt;/p&gt;  &lt;p&gt;- Web: En el último año casi 20.000 visitas en www.secondnug.com desde 53 países diferentes.&lt;/p&gt;  &lt;p&gt;- En las redes sociales: 413 Followers en Twitter y 489 Fans en Facebook.&lt;/p&gt;  &lt;p&gt;- En la lista de correo: 1.427 miembros.&lt;/p&gt;  &lt;p&gt;Y en los eventos…&lt;/p&gt;  &lt;p&gt;- Más de 13.000 registros y 10.000 asistentes reales entre el “on-live” y el “on-demand”, solo contando los eventos con MSDN España, con los que organizamos tan sólo la mitad de nuestras charlas.&lt;/p&gt;  &lt;p&gt;- Eventos con más de 1.000 visualizaciones.&lt;/p&gt;  &lt;p&gt;¡¡¡Gracias!! &lt;/p&gt;  &lt;p&gt;¡¡¡Muchas Gracias a TODOS!!!&lt;/p&gt;  &lt;p&gt;Seguiremos en la brecha, esperemos que como mínimo otros 5 años más &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Guiño" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/wlEmoticon_2D00_winkingsmile_5F00_242EDACE.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205266" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/secondnug/archive/tags/SecondNUG/default.aspx">SecondNUG</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/Aniversario/default.aspx">Aniversario</category></item><item><title>SharePoint 2010 y Azure: Integración con el Windows Azure Data Market (II)!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/25/sharepoint-2010-y-azure-integraci-243-n-con-el-windows-azure-data-market-ii.aspx</link><pubDate>Fri, 25 May 2012 12:05:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205264</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Siguiendo con la serie de posts sobre &lt;a href="http://geeks.ms/blogs/ciin/archive/2012/05/24/sharepoint-2010-y-azure-integraci-243-n-con-el-windows-azure-data-market-i.aspx"&gt;como integrar Windows Azure Data Market y SharePoint 2010&lt;/a&gt;, en esta ocasi&amp;oacute;n vamos a ver como podemos realizar dicha integraci&amp;oacute;n a trav&amp;eacute;s de un Business Data Connectivity Model o simplemente un conector de BCS (Business Connectivity Services) que crearemos en Visual Studio 11 Beta (VS 11 Beta) y que luego desplegaremos en nuestro ambiente de SharePoint. Empecemos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Lo primero que tenemos que hacer como siempre es conocer la forma que tenemos de integrar la fuente de datos del Windows Azure Data Market. En mi caso, voy a trabajar con el set de datos 2006 &amp;ndash; 2008 Crime in the United States que se puede integrar de forma muy sencilla en nuestras aplicaciones sin m&amp;aacute;s que a&amp;ntilde;adir una referencia al correspondiente servicio que en este caso es: &lt;em&gt;&lt;a href="https://api.datamarket.azure.com/data.gov/Crimes/"&gt;https://api.datamarket.azure.com/data.gov/Crimes/&lt;/a&gt;&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Como siempre, antes de ponernos a&amp;nbsp; hacer nada podemos jugar con el set de datos directamente desde el Data Market.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;En VS 11 Beta creamos un proyecto de tipo SharePoint 2010 Project al que a&amp;ntilde;adimos un elemento de tipo Business Data Connectivity Model que pasaremos a parametrizar a continuaci&amp;oacute;n. Este modelo tendr&amp;aacute; una &amp;uacute;nica entidad, Crime, que nos permitir&amp;aacute; acceder a la informaci&amp;oacute;n de los cr&amp;iacute;menes que expone el servicio.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image.png"&gt;&lt;img height="130" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_thumb.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_3.png"&gt;&lt;img height="130" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_thumb_3.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_4.png"&gt;&lt;img height="139" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_thumb_4.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;En lugar de trabajar con el dise&amp;ntilde;ador del Business Data Connectivity Model, vamos a agregar en primer lugar la l&amp;oacute;gica necesaria para acceder a los datos del servicio. Para ello, a&amp;ntilde;adimos en primer lugar una referencia al citado servicio en nuestro proyecto. Tendremos que a&amp;ntilde;adir adem&amp;aacute;s una referencia a System.Data.Services.Client.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A partir de aqu&amp;iacute;, en el explorador de soluciones vamos a preparar las dos clases que se crean al a&amp;ntilde;adir el elemento de tipo Business Data Connectivity Model al proyecto: Entity1 y Entity1Service. La primera clase modela la entidad tipo que nos permite integrar los datos del servicio en SharePoint a trav&amp;eacute;s de una serie de propiedades. La segunda, contiene los m&amp;eacute;todos que permiten trabajar con entidades de tipo Entity1.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;En mi caso, he renombrado Entity1 a Crime y le he a&amp;ntilde;adido las siguientes propiedades que luego se mapear&amp;aacute;n a propiedades del set de datos expuestos por el servicio:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Crime&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//TODO: Implement additional properties here. The property Message is just a sample how a property could look like.&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; ID { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; State { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; City { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Year { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Population { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Burglary { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; LarcenyTheft { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; MotorVehicleTheft { get; set; }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A continuaci&amp;oacute;n iremos por la clase Entity1Service que en este caso renombramos a CrimeService. En la misma a&amp;ntilde;adimos referencias a System.Net, System.Data.Services.Clien y al servicio de Windows Azure Data Market. &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A&amp;ntilde;adimos a la clase un m&amp;eacute;todo que nos permita devolver un proxy al servicio. Como veis, simplemente se trata de devolver dicho proxy y adem&amp;aacute;s lidiar con no tener problemas de conexi&amp;oacute;n por SSL usando para ello ServicePointManager y confiando en certificados del Windows Azure Data Market. Este proxy nos permitir&amp;aacute; acceder a los datos del servicio.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; datagovCrimesContainer GetProxy()&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     ServicePointManager.ServerCertificateValidationCallback =&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;         ((sender, certificate, chain, sslPolicyErrors) =&amp;gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;             certificate.Subject.Contains(&lt;span style="color:#006080;"&gt;&amp;quot;datamarket&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;     Uri serviceUri =&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;https://api.datamarket.azure.com/Data.ashx/data.gov/Crimes&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;     datagovCrimesContainer proxy =&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; datagovCrimesContainer(serviceUri);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;     proxy.Credentials =&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NetworkCredential(&lt;span style="color:#006080;"&gt;&amp;quot;Yor Data Market Account&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;             &lt;span style="color:#006080;"&gt;&amp;quot;Your Data Market Key&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; proxy;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Esta clase al menos tiene que implementar dos m&amp;eacute;todos:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Uno de tipo &amp;ldquo;Specific finder&amp;rdquo; que devuelva una entidad de tipo Crime en base a un par&amp;aacute;metro como por ejemplo puede ser un identificador. En este caso, el m&amp;eacute;todo en cuesti&amp;oacute;n se ha renombrado a ReadCrime. C&amp;oacute;mo veis, a partir de un identificador y el proxy podemos acceder f&amp;aacute;cilmente a un registro expuesto por el servicio y devolverlo.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; Crime ReadCrime(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; id)&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     datagovCrimesContainer proxy = GetProxy();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;     var results = from stat &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; proxy.CityCrime&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;                   &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; stat.ROWID == id&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;                   select stat;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;     Crime currentStat = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Crime();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;     currentStat.ID = results.Single().ROWID;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;     currentStat.City = results.Single().City;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;     currentStat.State = results.Single().State;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;     currentStat.Year = results.Single().Year;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;     currentStat.Population = results.Single().Population;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;     currentStat.Burglary = results.Single().Burglary;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;     currentStat.LarcenyTheft = results.Single().LarcenyTheft;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;     currentStat.MotorVehicleTheft = results.Single().MotorVehicleTheft;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; currentStat;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Uno de tipo &amp;ldquo;finder&amp;rdquo; que nos devuelva una colecci&amp;oacute;n de objetos de tipo Crime. En este caso se ha renombrado el m&amp;eacute;todo a ReadCrimes(). Como antes, a partir del proxy es sencillo obtener una colecci&amp;oacute;n de objetos CityCrime expuestos por el servicio que luego usaremos para devolver la colecci&amp;oacute;n de objetos de tipo Crime.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; IEnumerable&amp;lt;Crime&amp;gt; ReadCrimes()&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     List&amp;lt;Crime&amp;gt; queryResults = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Crime&amp;gt;();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;     datagovCrimesContainer proxy = GetProxy();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;     IEnumerable&amp;lt;CityCrime&amp;gt; crimes = &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;         proxy.CityCrime.Where(c =&amp;gt; c.State ==&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;                &lt;span style="color:#006080;"&gt;&amp;quot;Washington&amp;quot;&lt;/span&gt; &amp;amp;&amp;amp; (c.Year == 2008 || c.Year == 2007));&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Procesando el set de datos devuelto&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var c &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; crimes)&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;         Crime cr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Crime();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;         cr.ID = c.ROWID;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;         cr.City = c.City;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;         cr.State = c.State;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;         cr.Year = c.Year;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;         cr.Population = c.Population;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;         cr.Burglary = c.Burglary;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt;         cr.LarcenyTheft = c.LarcenyTheft;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum22" style="color:#606060;"&gt;  22:&lt;/span&gt;         cr.MotorVehicleTheft = c.MotorVehicleTheft;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum23" style="color:#606060;"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum24" style="color:#606060;"&gt;  24:&lt;/span&gt;         queryResults.Add(cr);&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum25" style="color:#606060;"&gt;  25:&lt;/span&gt;     }&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum26" style="color:#606060;"&gt;  26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum27" style="color:#606060;"&gt;  27:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; queryResults.ToList();&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum28" style="color:#606060;"&gt;  28:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A partir de aqu&amp;iacute;, de vuelta al explorador del modelo de BDC tenemos que configurar adecuadamente la entidad Crime para que se usen estos m&amp;eacute;todos y tenga los miembros correspondientes de acuerdo a la definici&amp;oacute;n de la clase. Este trabajo lo haremos en el dise&amp;ntilde;ador del modelo y el explorador.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;En el dise&amp;ntilde;ador configuraremos el nombre de la entidad y de los m&amp;eacute;todos expuestos. Mientras que en el explorador del modelo configuraremos adecuadamente los par&amp;aacute;metros de entrada y de salida de cada uno de estos m&amp;eacute;todos. &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Una vez creado el conector, simplemente lo desplegamos y en nuestro sitio de SharePoint creamos la correspondiente lista externa que mostrar&amp;aacute; los datos expuestos por el servicio.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_5.png"&gt;&lt;img height="158" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_thumb_5.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_6.png"&gt;&lt;img height="244" width="123" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_thumb_6.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_7.png"&gt;&lt;img height="121" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_1495A/image_thumb_7.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Y hasta aqu&amp;iacute; llega este segundo post sobre la integraci&amp;oacute;n de SharePoint 2010 y el Windows Azure Data Market.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205264" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Foundation+2010/default.aspx">SharePoint Foundation 2010</category></item><item><title>MVC Exportar Datos a .XLS “Excel Files”</title><link>http://geeks.ms/blogs/mrubino/archive/2012/05/25/mvc-exportar-datos-a-xls-excel-files.aspx</link><pubDate>Fri, 25 May 2012 07:19:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205258</guid><dc:creator>Marc Rubiño</dc:creator><slash:comments>1</slash:comments><description>&lt;p style="text-align:justify;"&gt;Este truco es uno de los top10 en los foros de MSDN y sigue siendo una de aquellas cosas que no es f&amp;aacute;cil encontrar una documentaci&amp;oacute;n clara y adecuada.&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Si hablamos desde la perspectiva de ASP.NET MVC esta tarea se nos simplifica much&amp;iacute;simo porque desde nuestro controlador podemos devolver directamente el contenido de un fichero como cualquier otro ActionResult que tengamos configurado. Para eso tenemos el m&amp;eacute;todo &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.file.aspx" title="MVC File"&gt;File&lt;/a&gt; que nos proporciona esa funcionalidad y no tenemos que utilizar directamente el objeto Response como nos pasaba con el cl&amp;aacute;sico ASP.NET WebForms.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="syntaxhighlighter  csharp" id="highlighter_674768"&gt;
&lt;div class="bar   "&gt;
&lt;div class="toolbar"&gt;
&lt;div class="item copyToClipboard"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="lines"&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;FileContentResult File(&lt;/code&gt;&lt;code class="csharp keyword"&gt;byte&lt;/code&gt;&lt;code class="csharp plain"&gt;[] fileContents, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;contentType)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;FileContentResult File(&lt;/code&gt;&lt;code class="csharp keyword"&gt;byte&lt;/code&gt;&lt;code class="csharp plain"&gt;[] fileContents, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;contentType, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;fileDownloadName)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;FileStreamResult File(Stream fileStream, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;contentType)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;FileStreamResult File(Stream fileStream, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;contentType, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;fileDownloadName)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;FilePathResult File(&lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;fileName, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;contentType)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;6&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;FilePathResult File(&lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;fileName, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;contentType, &lt;/code&gt;&lt;code class="csharp keyword"&gt;string&lt;/code&gt; &lt;code class="csharp plain"&gt;fileDownloadName)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Para este ejemplo utilizar&amp;eacute; la sobrecarga que retorna un FileStreamResult porque lo que queremos hacer es:&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Un servicio que recupere los datos de nuestro repositorio, serialice nuestra entidad del dominio en un XML directamente en memoria. Devuelva su contenido especificando que es un fichero Excel y el nombre del fichero que se utilizar&amp;aacute; para guardar.&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Todo esto lo generar&amp;aacute; din&amp;aacute;micamente en memoria sin tener que tener el fichero Excel f&amp;iacute;sicamente en nuestro servidor.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="syntaxhighlighter  csharp" id="highlighter_152056"&gt;
&lt;div class="bar"&gt;
&lt;div class="toolbar"&gt;
&lt;div class="item copyToClipboard"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="lines"&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp keyword"&gt;public&lt;/code&gt; &lt;code class="csharp plain"&gt;ActionResult ObtenerMisEnviosXmlExcel()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;{&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp plain"&gt;_productosServices = &lt;/code&gt;&lt;code class="csharp keyword"&gt;new&lt;/code&gt; &lt;code class="csharp plain"&gt;ProductosServices();&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp plain"&gt;var stream = &lt;/code&gt;&lt;code class="csharp keyword"&gt;new&lt;/code&gt; &lt;code class="csharp plain"&gt;MemoryStream();&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp plain"&gt;var serialicer = &lt;/code&gt;&lt;code class="csharp keyword"&gt;new&lt;/code&gt; &lt;code class="csharp plain"&gt;XmlSerializer(&lt;/code&gt;&lt;code class="csharp keyword"&gt;typeof&lt;/code&gt;&lt;code class="csharp plain"&gt;(List));&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp comments"&gt;//Cargo los datos&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp plain"&gt;List datos = _productosServices.GetProductos();&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp comments"&gt;//Lo transformo en un XML y lo guardo en memoria&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp plain"&gt;serialicer.Serialize(stream, datos);&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp plain"&gt;stream.Position = 0;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp comments"&gt;//devuelvo el XML de la memoria como un fichero .xls&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt1"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="spaces"&gt;&lt;/code&gt;&lt;code class="csharp keyword"&gt;return&lt;/code&gt; &lt;code class="csharp plain"&gt;File(stream, &lt;/code&gt;&lt;code class="csharp string"&gt;&amp;quot;application/vnd.ms-excel&amp;quot;&lt;/code&gt;&lt;code class="csharp plain"&gt;, &lt;/code&gt;&lt;code class="csharp string"&gt;&amp;quot;Pedidos.xls&amp;quot;&lt;/code&gt;&lt;code class="csharp plain"&gt;);&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="line alt2"&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="number"&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;
&lt;td class="content"&gt;&lt;code class="csharp plain"&gt;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="text-align:justify;"&gt;Para poder serializar nuestra entidad del dominio utilizaremos la clase &lt;strong&gt;XmlSerializer&lt;/strong&gt; que se encuentra en el namespace &lt;strong&gt;System.Xml.Serialization&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="text-align:justify;"&gt;Cada vez que realicemos esta llamada nos devolver&amp;aacute; el fichero Excel creado al vuelo con los datos recuperados de nuestro repositorio.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://marcrub.files.wordpress.com/2012/05/excel1.png"&gt;&lt;img height="297" width="300" src="http://marcrub.files.wordpress.com/2012/05/excel1.png?w=300&amp;amp;h=297" title="Excel1" class="aligncenter size-medium wp-image-1823" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Una cosa que hay que tener en cuenta al realizar la serializaci&amp;oacute;n en XML, es que no es el formato est&amp;aacute;ndar de Excel y tiene que abrir el fichero como datos XML. Eso implica que al abrir el fichero lance un par de avisos que son un poco inc&amp;oacute;modos m&amp;aacute;s que otra cosa.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://marcrub.files.wordpress.com/2012/05/excel.png"&gt;&lt;img height="186" width="300" src="http://marcrub.files.wordpress.com/2012/05/excel.png?w=300&amp;amp;h=186" title="Excel" class="aligncenter size-medium wp-image-1824" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;He estado probando diferentes librer&amp;iacute;as para crear ficheros Excel, pero todos te permiten montando el documento por programaci&amp;oacute;n, pero no montarlo autom&amp;aacute;ticamente dependiendo de los datos cargados como es el caso del ejemplo anterior.&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Si alguien conoce alguna librer&amp;iacute;a que sea capaz de hacerlo directamente o tiene alguna experiencia parecida le invito a que la comparta para poder ampliar esta informaci&amp;oacute;n y que nos sea de utilidad a todos.&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Os recuerdo que tambi&amp;eacute;n ten&amp;eacute;is una entrada relacionada para &lt;a target="_blank" href="http://mrubino.net/2010/09/07/tiptrick-asp-net-mvc-pdf/" title="PDF"&gt;generar un PDF al vuelo&lt;/a&gt; directamente desde una de nuestras vistas recuperando su HTML.&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;Cross-Posting: &lt;a href="http://mrubino.net"&gt;http://mrubino.net&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align:justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205258" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/mrubino/archive/tags/Trucos/default.aspx">Trucos</category><category domain="http://geeks.ms/blogs/mrubino/archive/tags/MVC/default.aspx">MVC</category></item><item><title>Evento en Salamanca–Como pasar de Windows Phone a Windows 8</title><link>http://geeks.ms/blogs/jagallego/archive/2012/05/25/evento-en-salamanca-como-pasar-de-windows-phone-a-windows-8.aspx</link><pubDate>Fri, 25 May 2012 00:11:21 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205256</guid><dc:creator>Jose Antonio Gallego</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Siguiendo con la ruta, que mejor para celebrar la salida de la próxima release de Windows 8 que ver como migrar nuestras aplicaciones de Windows Phone a esta nueva versión, esta vez toca en Salamanca, gracias a la Universidad Pontificia de Salamanca, nos veremos allí el 8 de Junio. &lt;/p&gt;  &lt;table style="line-height:normal;" border="0" cellspacing="0" cellpadding="0" width="669" align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;table border="0" cellspacing="0" cellpadding="0" width="669"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td height="185" width="745" align="center"&gt;                 &lt;div&gt;                   &lt;div id="contingut_print"&gt;                     &lt;div id="SC_contingut"&gt;                       &lt;table border="0" cellspacing="0" cellpadding="0" width="80%" align="center"&gt;&lt;tbody&gt;                           &lt;tr&gt;                             &lt;td&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514558&amp;amp;Culture=es-ES"&gt;&lt;img style="margin:5px 5px 5px 0px;" border="0" src="http://www.microsoft.com/spain/msdn/mailing/wpaw8.jpg" width="587" height="293" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                        &lt;table border="0" cellspacing="2" cellpadding="1" width="620"&gt;&lt;tbody&gt;                           &lt;tr valign="top" align="left"&gt;                             &lt;td style="padding-bottom:1px;padding-left:1px;padding-right:1px;padding-top:1px;" width="614"&gt;                               &lt;p class="estilotitulo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:16pt;" color="#003366"&gt;&lt;strong&gt;Como pasar de Windows Phone a Windows 8 &lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Trae tu aplicación desarrollada sobre Windows Phone y mígrala a Windows 8 &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Requisitos previos: &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;ul style="margin-left:30pt;"&gt;                                 &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Conocimientos sobre el desarrollo en Windows Phone 7&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;PC con Windows 8 Consumer Preview y Visual Studio 11 &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font color="#666666" size="2" face="Arial"&gt;Curiosidad por ver Windows 8 :-)&lt;/font&gt;&lt;/li&gt;                               &lt;/ul&gt;                                &lt;p class="estilotitulomenor"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:11pt;" color="#003366"&gt;Donde y Cuando&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;8 de Junio de 2012&lt;/font&gt;&lt;/strong&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160; &lt;br /&gt;&lt;font color="#666666"&gt;Universidad Pontificia de Salamanca, Facultad de Informática                                       &lt;br /&gt;Aula Barroca&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;"&gt;&lt;font color="#666666"&gt;&amp;#160; &lt;br /&gt;C/ Compañia, 5&amp;#160; &lt;br /&gt;Salamanca&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estilotitulomenor"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:11pt;" color="#003366"&gt;Agenda &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;strong&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;9:00 – 9:30 Recepción &lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;strong&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;9:30 – 11:00 &lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                                &lt;ul style="margin-left:30pt;"&gt;                                 &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Las nuevas herramientas diferencias respecto a Windows Phone &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Como desarrollar para Windows Phone desde Windows 8 &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Cambios en el modelo de desarrollo &lt;/font&gt;&lt;/font&gt;                                    &lt;ul style="margin-left:30pt;" class="estiloparrafo"&gt;                                     &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Ciclo de vida de nuestras aplicaciones en Windows 8 &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Los espacios de nombre &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Enlace de datos &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Navegación &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Localización de idioma &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Almacenamiento de datos &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Cambios en WCF &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Como ampliar nuestras aplicaciones migradas (Trabajando con Contratos) &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                   &lt;/ul&gt;                                 &lt;/li&gt;                               &lt;/ul&gt;                                &lt;p class="estiloparrafo"&gt;&lt;strong&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;11:30 – 13:00 &lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                                &lt;ul style="margin-left:30pt;"&gt;                                 &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;¡Manos a la obra!&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;                               &lt;/ul&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;En el apartado de Manos a la obra, los asistentes podrán traer sus propias aplicaciones y seguir los pasos que se expondrán para migrar sus aplicaciones, también contaremos con una aplicación base en Windows Phone para aquellos que no tengan una aplicación y deseen seguir el proceso.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo" align="center"&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514558&amp;amp;Culture=es-ES"&gt;&lt;img style="margin:5px 5px 5px 0px;" border="0" src="http://www.microsoft.com/spain/msdn/mailing/wpaw8-reg.jpg" width="150" height="40" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                        &lt;br /&gt;&lt;/div&gt;                   &lt;/div&gt;                 &lt;/div&gt;               &lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205256" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jagallego/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/jagallego/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://geeks.ms/blogs/jagallego/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>Evento–Como pasar tus apps de Windows Phone a Windows 8</title><link>http://geeks.ms/blogs/jagallego/archive/2012/05/25/evento-como-pasar-tus-apps-de-windows-phone-a-windows-8.aspx</link><pubDate>Fri, 25 May 2012 00:04:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205072</guid><dc:creator>Jose Antonio Gallego</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Lo prometido es deuda, aquí os dejo la invitación para la charla que daré en Madrid el próximo día 23 de Mayo en el Hotel Velada en Madrid.&lt;/p&gt;  &lt;table style="line-height:normal;" border="0" cellspacing="0" cellpadding="0" width="669" align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;table border="0" cellspacing="0" cellpadding="0" width="669"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td height="185" width="745" align="center"&gt;                 &lt;div&gt;                   &lt;div id="contingut_print"&gt;                     &lt;div id="SC_contingut"&gt;                       &lt;table border="0" cellspacing="0" cellpadding="0" width="80%" align="center"&gt;&lt;tbody&gt;                           &lt;tr&gt;                             &lt;td&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513428&amp;amp;Culture=es-ES"&gt;&lt;img border="0" src="http://www.microsoft.com/spain/msdn/mailing/wpaw8.jpg" width="587" height="293" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                        &lt;table border="0" cellspacing="2" cellpadding="1" width="620"&gt;&lt;tbody&gt;                           &lt;tr valign="top" align="left"&gt;                             &lt;td style="padding-bottom:1px;padding-left:1px;padding-right:1px;padding-top:1px;" width="614"&gt;                               &lt;p class="estilotitulo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:16pt;" color="#003366"&gt;&lt;strong&gt;Como pasar de Windows Phone a Windows 8 &lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Trae tu aplicación desarrollada sobre Windows Phone y mígrala a Windows 8 &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Requisitos previos: &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;ul style="margin-left:30pt;"&gt;                                 &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Conocimientos sobre el desarrollo en Windows Phone 7&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;PC con Windows 8 Consumer Preview y Visual Studio 11 &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                               &lt;/ul&gt;                                &lt;p class="estilotitulomenor"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:11pt;" color="#003366"&gt;Donde y Cuando&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;23 de mayo de 2012&lt;/font&gt;&lt;/strong&gt;&lt;font style="font-size:10pt;"&gt;                                      &lt;br /&gt;&lt;font color="#666666"&gt;Hotel Velada Madrid                                        &lt;br /&gt;C/ Alcalá, 476                                         &lt;br /&gt;Madrid&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estilotitulomenor"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:11pt;" color="#003366"&gt;Agenda &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;strong&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;9:00 – 9:30 Recepción &lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo"&gt;&lt;strong&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;9:30 – 11:00 &lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                                &lt;ul style="margin-left:30pt;"&gt;                                 &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Las nuevas herramientas diferencias respecto a Windows Phone &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Como desarrollar para Windows Phone desde Windows 8 &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                  &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Cambios en el modelo de desarrollo &lt;/font&gt;&lt;/font&gt;                                    &lt;ul style="margin-left:30pt;" class="estiloparrafo"&gt;                                     &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Ciclo de vida de nuestras aplicaciones en Windows 8 &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Los espacios de nombre &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Enlace de datos &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Navegación &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Localización de idioma &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Almacenamiento de datos &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Cambios en WCF &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                      &lt;li&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;Como ampliar nuestras aplicaciones migradas (Trabajando con Contratos) &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;                                   &lt;/ul&gt;                                 &lt;/li&gt;                               &lt;/ul&gt;                                &lt;p class="estiloparrafo"&gt;&lt;strong&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;11:30 – 14:00 &lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;                                &lt;ul style="margin-left:30pt;"&gt;                                 &lt;li class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;¡Manos a la obra!&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;                               &lt;/ul&gt;                                &lt;p class="estiloparrafo"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size:10pt;" color="#666666"&gt;En el apartado de Manos a la obra, los asistentes podrán traer sus propias aplicaciones y seguir los pasos que se expondrán para migrar sus aplicaciones, también contaremos con una aplicación base en Windows Phone para aquellos que no tengan una aplicación y deseen seguir el proceso.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;                                &lt;p class="estiloparrafo" align="center"&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513428&amp;amp;Culture=es-ES"&gt;&lt;img border="0" src="http://www.microsoft.com/spain/msdn/mailing/wpaw8-reg.jpg" width="150" height="40" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                        &lt;br /&gt;&lt;/div&gt;                   &lt;/div&gt;                 &lt;/div&gt;               &lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205072" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jagallego/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/jagallego/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://geeks.ms/blogs/jagallego/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>SharePoint 2010 y Azure: Integración con el Windows Azure Data Market (I)!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/24/sharepoint-2010-y-azure-integraci-243-n-con-el-windows-azure-data-market-i.aspx</link><pubDate>Thu, 24 May 2012 15:46:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205247</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>1</slash:comments><description>&lt;p align="justify"&gt;Otro gran punto de integración entre SharePoint 2010 y Windows Azure es a través del Windows Azure Data Market de manera que podemos acceder a datos publicados utilizando artefactos de SharePoint como pueden ser WebParts o conectores de BCS. En este primer post os voy a mostrar como podemos usar Bing Translator, que ya está incluido en el Windows Azure Data Market, para poder realizar traducciones en una WebPart. Comencemos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;En primer lugar, necesitamos estar suscritos al Windows Azure Data Market y añadir a nuestras fuentes de datos Microsoft Translator.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Una vez agregada, podemos realizar alguna prueba de consulta y además tomar nota de ciertas Urls importantes de uso del servicio como:&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;Url raíz del servicio: &lt;a href="https://api.datamarket.azure.com/Bing/MicrosoftTranslator/"&gt;https://api.datamarket.azure.com/Bing/MicrosoftTranslator/&lt;/a&gt;&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div align="justify"&gt;Url para una consulta: &lt;a href="https://api.datamarket.azure.com/Data.ashx/Bing/MicrosoftTranslator/Translate?Text=%27perro%27&amp;amp;To=%27en%27&amp;amp;From=%27es%27&amp;amp;$top=100"&gt;https://api.datamarket.azure.com/Data.ashx/Bing/MicrosoftTranslator/Translate?Text=%27perro%27&amp;amp;To=%27en%27&amp;amp;From=%27es%27&amp;amp;$top=100&lt;/a&gt;.&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;A partir de aquí, en Visual Studio 11 Beta creamos un proyecto de tipo SharePoint 2010 Project al que le agramamos un&amp;#160; elemento de tipo Visual WebPart que configuramos para poder modelar la solución básica de traducción.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="750" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="250"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_thumb.png" width="244" height="130" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="250"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_thumb_3.png" width="244" height="130" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="250"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_thumb_4.png" width="244" height="140" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p align="justify"&gt;Partimos del &lt;a&gt;ejemplo de uso de Microsoft Translator&lt;/a&gt; que pasa por descargarse &lt;a href="https://datamarket.azure.com/dataset/explore/getproxy/1899a118-d202-492c-aa16-ba21c33c06cb"&gt;el proxy C#&lt;/a&gt; disponible en la página de detalle de Microsoft Translator en el Data Market. A partir de aquí, ya estamos listos para codificar de acuerdo a los siguientes pasos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Agregar referencia a System.Data.Services.Client puesto que los datos del Data Market los consultaremos a través de servicios REST.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Añadir directivas using a System.Data.Services.Client, System.Net y el espacio de nombres del proxy que nos hemos bajado (Microsoft en este caso).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Especificar la cuenta y clave de uso del Azure Data Market.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Evitar el infame error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel, date una vuelta por este enlace para saber de que &lt;a href="http://stackoverflow.com/questions/703272/could-not-establish-trust-relationship-for-ssl-tls-secure-channel-soap"&gt;estamos hablando&lt;/a&gt;. Como veis, en mi caso y dado que esto son pruebas uso SharePointManager para saltarme problemas de certificados y dar por válidos los certificados usados por el Azurre Data Market. Si quieres específicamente confiar únicamente en los certificados del Windows Azure Data Market, basta con cambiar que se confía en todos los certificados (valor true) por certificate.Subject.Contains(&amp;quot;datamarket&amp;quot;).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Creamos una instancia del objeto TranslatorContainer definido en el proxy y que nos permite realizar la consulta de traducción.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Especificamos la url del servicio de Microsoft Translator y las credenciales de acceso al Windows Azure Data Market.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;A partir de aquí especificamos que queremos traducir, el idioma de destino y el de origen…realizamos la traducción y procesamos los resultados.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.txtTranslation.Text = &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// tUri del Servicio &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     Uri uServiceRootUri =&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                    &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                        &lt;span style="color:#006080;"&gt;&amp;quot;https://api.datamarket.azure.com/Bing/MicrosoftTranslator/&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//  Claves de acceso&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; sAccountUser = &lt;span style="color:#006080;"&gt;&amp;quot;TuCuenta&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; sAccountKey = &lt;span style="color:#006080;"&gt;&amp;quot;TuClave&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Objeto Translator Container&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;     ServicePointManager.ServerCertificateValidationCallback =&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;         ((MySender, certificate, chain, sslPolicyErrors) =&amp;gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;); &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     TranslatorContainer tc = &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TranslatorContainer(uServiceRootUri);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Credenciales de acceso &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     tc.Credentials = &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NetworkCredential(sAccountUser,sAccountKey); &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//*****************************************&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//A traducir&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//*****************************************&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Generamos la consulta &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     var translationQuery = &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;         tc.Translate(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.txtWordToTranslate.Text,&lt;span style="color:#006080;"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;,&lt;span style="color:#006080;"&gt;&amp;quot;es&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Ejecutamos la consulta&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;     var translationResults = translationQuery.Execute();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Procesamos los resultados&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (translationResults!=&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var item &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; translationResults)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.txtTranslation.Text += item.Text;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;     }                &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum43"&gt;  43:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum44"&gt;  44:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum45"&gt;  45:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum46"&gt;  46:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum47"&gt;  47:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.lblError.Text = &lt;span style="color:#006080;"&gt;&amp;quot;Error: &amp;quot;&lt;/span&gt; +&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum48"&gt;  48:&lt;/span&gt;         ex.Message;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum49"&gt;  49:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Y finalmente la prueba del algodón:&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-y-Azure-Integracin-con-e_10313/image_thumb_5.png" width="244" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Otros posts sobre la integración de SharePoint y Azure:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/09/13/sharepoint-2010-amp-azure-integraci-243-n-de-servicios-mediante-bcs-ii.aspx"&gt;SharePoint 2010 &amp;amp; Azure: Integración de servicios mediante BCS (II)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/08/25/sharepoint-2010-amp-azure-integraci-243-n-de-servicios-mediante-bcs-i.aspx"&gt;SharePoint 2010 &amp;amp; Azure: Integración de servicios mediante BCS (I)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/06/13/sharepoint-2010-amp-office-365-integraci-243-n-con-windows-azure-v-237-a-jquery-i.aspx"&gt;SharePoint 2010 &amp;amp; Office 365: Integración con Windows Azure vía jQuery (I)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/06/07/sharepoint-amp-azure-alternativas-de-integraci-243-n-iv.aspx"&gt;SharePoint &amp;amp; Azure: Alternativas de integración (IV)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/05/29/sharepoint-amp-azure-alternativas-de-integraci-243-n-iii.aspx"&gt;SharePoint &amp;amp; Azure: Alternativas de integración (III)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/05/21/sharepoint-amp-azure-alternativas-de-integraci-243-n-ii.aspx"&gt;SharePoint &amp;amp; Azure: Alternativas de integración (II)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/05/10/sharepoint-amp-azure-alternativas-de-integraci-243-n-i.aspx"&gt;SharePoint &amp;amp; Azure: Alternativas de integración (I)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/02/28/sharepoint-2010-ejemplos-de-integraci-243-n-con-windows-azure-i.aspx"&gt;SharePoint 2010: Ejemplos de integración con Windows Azure (I)!&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205247" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Foundation+2010/default.aspx">SharePoint Foundation 2010</category></item><item><title>Windows 8: 2 Fast 2 Fluid. Diseño Metro para Desarrolladores</title><link>http://geeks.ms/blogs/secondnug/archive/2012/05/24/windows-8-2-fast-2-fluid-dise-241-o-metro-para-desarrolladores.aspx</link><pubDate>Thu, 24 May 2012 14:06:36 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205236</guid><dc:creator>Fran Díaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;El próximo &lt;strong&gt;martes 5 de junio&lt;/strong&gt; en Second Nug trataremos un evento un tanto atípico, dado que pese a estar dirigido a desarrolladores, vamos a hablar de diseño. Y es que con la llegada de &lt;strong&gt;Windows 8&lt;/strong&gt;, y las aplicaciones Metro, Microsoft ha hecho un gran esfuerzo en que los desarrolladores puedan seguir usando conocimientos previos para desarrollar en la nueva plataforma, pero ha hecho también una gran labor en lo referente a la experiencia de usuario.&lt;/p&gt;  &lt;p&gt;Es por ello que en este webcast trataremos de desgranar las pautas y buenas prácticas necesarias para crear aplicaciones Metro elegantes y eficientes, desde la perspectiva de un diseñador alejado del diseño, pero que no renuncia a la calidad de una buena interfaz de usuario.&lt;/p&gt;  &lt;p&gt;Todo ello de la mano de &lt;strong&gt;Toni Recio&lt;/strong&gt;, Responsable de Tecnología e Innovación en Pasiona Consulting.&lt;/p&gt;  &lt;p&gt;Url Registro: &lt;a title="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514551&amp;amp;Culture=es-ES" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514551&amp;amp;Culture=es-ES"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514551&amp;amp;Culture=es-ES&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514551&amp;amp;Culture=es-ES"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="foro_windows8_1" border="0" alt="foro_windows8_1" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/foro_5F00_windows8_5F00_1_5F00_4A866CC5.jpg" width="472" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Además, todos los eventos anteriores de este año así como sus materiales están aquí disponibles: &lt;/p&gt;  &lt;p&gt;- &lt;a href="http://www.secondnug.com/EventosDesarrollo/tabid/57/Default.aspx%20"&gt;Eventos Desarrollo&lt;/a&gt;    &lt;br /&gt;Y dispones de nuestro &lt;a href="http://www.secondnug.com/Hist%C3%B3ricodeEventos/tabid/87/Default.aspx"&gt;Histórico de Eventos,&lt;/a&gt; con los eventos desde 2008 a 2011: &lt;/p&gt;  &lt;p&gt;Esperamos veros allí &lt;img alt="Guiño" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/wlEmoticon_2D00_winkingsmile_5F00_1B62A53F.png" /&gt;&lt;/p&gt;  &lt;p&gt;Un Saludo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205236" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/secondnug/archive/tags/WebCast/default.aspx">WebCast</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/SecondNUG/default.aspx">SecondNUG</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/SNUG/default.aspx">SNUG</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>SharePoint 2010: Mostrar/Ocultar “Ver todo el contenido del sitio” y “Papelera de reciclaje”</title><link>http://geeks.ms/blogs/santypr/archive/2012/05/24/sharepoint-2010-mostrar-ocultar-ver-todo-el-contenido-del-sitio-y-papelera-de-reciclaje.aspx</link><pubDate>Thu, 24 May 2012 12:30:14 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205226</guid><dc:creator>Santiago Porras Rodríguez</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;font face="Segoe UI"&gt;Para entrar en contexto, estos elementos son los que aparecen en la zona de QuickLinks, en el panel que se encuentra a la izquierda y que se sitúan justo debajo de los enlaces a las Listas y Librerías.&lt;/font&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;padding-left:0px;width:250px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:493a4530-4a50-4a72-986e-20461a744028" class="wlWriterEditableSmartContent"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/santypr/1_2D00_8x6_5F00_5E0C2724.jpg" title="" rel="thumbnail"&gt;&lt;img border="0" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/santypr/1_5F00_0A48AE09.png" width="250" height="246" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;En algunas ocasiones nos encontramos que las opciones “Ver todo el contenido del sitio” y “Papelera de reciclaje” no se encuentran visibles. Esto depende en gran medida del tipo de diseño de página que hayamos seleccionado (Page Layout).&lt;/font&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:4d1961bd-dd5e-4449-8fe4-cb3fa07ba874" class="wlWriterEditableSmartContent"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/santypr/1_5F00_1_2D00_8x6_5F00_379A1E0C.jpg" title="" rel="thumbnail"&gt;&lt;img border="0" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/santypr/1_5F00_1_5F00_52369458.png" width="335" height="304" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:140d8034-a3c6-4330-9128-22dc702d0da7" class="wlWriterEditableSmartContent"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/santypr/2_2D00_8x6_5F00_5075A2B7.jpg" title="" rel="thumbnail"&gt;&lt;img border="0" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/santypr/2_5F00_7B3DE0FC.png" width="335" height="253" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Si queremos que estén visibles u ocultos, lo más sencillo sería establecer el diseño de página en alguno que sí lo muestre, pero… como no somos conformistas, queremos usar el diseño que queramos y que lo muestre/oculte siempre.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Solución&lt;/h2&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Pues bien, la solución es muy sencilla. Sólo hay que añadir algo de CSS donde queramos o necesitemos. En mi caso, tengo una hoja de estilos asociada a la MasterPage que se ejecuta después de CoreV4.css para poder sobreescribir sus reglas.&lt;/font&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:CssRegistration&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/Style Library/MyProject/Css/mystyle.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;After&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;corev4.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Segoe UI"&gt;Lo que tendremos que añadir es lo siguiente:&lt;/font&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;font face="Segoe UI"&gt;Mostrar siempre los elementos “Ver todo el contenido del sitio” y “Papelera de reciclaje”&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;.s4-specialNavLinkList  {
    display:block !important;
}&lt;/pre&gt;


&lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;font face="Segoe UI"&gt;Ocultar siempre los elementos “Ver todo el contenido del sitio” y “Papelera de reciclaje”&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;.s4-specialNavLinkList  {
    display:none !important;
}&lt;/pre&gt;


&lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205226" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/santypr/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/santypr/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/santypr/archive/tags/Dise_26002300_241_3B00_o/default.aspx">Dise&amp;#241;o</category></item><item><title>Pasado, presente y futuro de los grupos de usuario</title><link>http://geeks.ms/blogs/davidmartos/archive/2012/05/24/pasado-presente-y-futuro-de-los-grupos-de-usuario.aspx</link><pubDate>Thu, 24 May 2012 09:43:35 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205202</guid><dc:creator>David Martos</dc:creator><slash:comments>45</slash:comments><description>&lt;p&gt;Bueno, aunque el título de este artículo queda muy bonito en realidad voy a hablar muy poco de pasado y de futuro y mucho de presente, ya que es el presente lo que ha motivado que me ponga a escribir esto. El pasado no lo conozco demasiado bien, y el futuro no lo conoce nadie, pero el presente lo resumo con esto, y omitiré nombres y empresas para que no influya en el relato:&lt;/p&gt;  &lt;p&gt;Ayer por la tarde el Grupo de Usuarios de SharePoint de Catalunya organiza un evento gratuito de 2 horas para el que, además de dos ponentes de Barcelona traemos a un ponente de lujo de Madrid. La temática y los productos cubiertos son muy interesantes y el nivel altísimo. Además, a tenor de lo que dice mi buzón de LinkedIn, hay interés en el mundo empresarial y necesidad de gente que domine estas tecnologías. Resultado: vienen 4 gatos, todos ellos compañeros de empresa de los ponentes (bueno, y una única persona de otra empresa pero que curiosamente es uno de los fundadores del grupo de usuario).&lt;/p&gt;  &lt;p&gt;Estos son los hechos. Ahora voy a exponer un posible atenuante: el evento se hacía en horario laboral (de 16:00 a 18:00). De todas maneras no creo que sea una causa aceptable porque el último evento del mismo grupo de usuarios se realizó de 18:00 a 20:00 y tuvimos un resultado similar.&lt;/p&gt;  &lt;p&gt;Y a partir de aquí empieza la parte de opinión personal. Sin querer emitir ningún juicio de valores, las causas a las que yo puedo achacar la baja asistencia al evento son las siguientes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Empresas y personas que no se han enterado del evento por falta de marketing. &lt;/li&gt;    &lt;li&gt;Empresas que no permiten a sus empleados asistir a este tipo de eventos por parecerles poco productivas. &lt;/li&gt;    &lt;li&gt;Personas que no tienen el interés suficiente por este tipo de asuntos o que no están dispuestas a destinar parte de su tiempo personal. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;El primero de los puntos seria responsabilidad nuestra directa. Hay que reconocer que ninguno de los organizadores del evento somos estrellas mediáticas y que lo único que hemos hecho para promocionar el evento son unos cuantos mensajes en Twitter, anuncios en nuestros blogs y en el grupo de LinkedIn. Es posible que no sigas ninguna de estas vías de comunicación (pero eso me llevaría al punto 3) pero lo que sí es cierto es que había 17 personas apuntadas al evento y la mayoría de estas personas no se presentaron. Sí, ya sé que esto pasa siempre, pero eso no quita que esté mal. Si llegamos a ver que ninguna persona ajena a nuestras empresas iban a venir hubiéramos hecho un evento interno y punto. O hubiéramos quedado directamente en un bar para intercambiar opiniones, ya que en general las personas que vienen a este tipo de eventos son precisamente los que menos necesitan las charlas técnicas y más necesitan la discusión en si.&lt;/p&gt;  &lt;p&gt;El segundo punto no deja de confirmar un mensaje que hace tiempo que tengo claro. Estoy viviendo y trabajando en un país en el que se le da una importancia mínima a la formación de las personas. Las mismas empresas que no permiten a sus empleados asistir a una formación gratuita de 2 horas sobre Windows 8 y SharePoint son aquellas que después les dan un proyecto que involucre alguna de estas tecnologías y mandan a la persona que tienen libre a los leones con una tarjeta en la frente que dice: Experto en Windows 8 y SharePoint. También son aquellas que mes sí mes también se ponen en contacto contigo por LinkedIn tras hacer una búsqueda del término “SharePoint” porque tienen una propuesta que seguramente será de tu interés. ¿Cómo no te va a interesar nuestra propuesta para un proyecto de 2 meses en un cliente buenísimo que quiere ponerse eso de Sharepoint? Además, seguramente después de esos 2 meses tendremos muchos más proyectos de eso de Sharepoint.&lt;/p&gt;  &lt;p&gt;El tercer punto es posiblemente el que más me molesta. Día sí día no escucho que hay mucha gente quemada con su trabajo, gente que se ha quedado en paro, gente que querría trabajar con cosas chulas y/o de una manera chula. También mucha gente que pregunta en los foros (esto me parece muy bien) y gente que te envía mails directamente con consultas (esto no es que me parezca mal, al final tienes que buscarte la vida de una manera o de otra, pero no me parece lo más adecuado). Yo me pregunto dónde está toda esa gente en momentos como éste. Señores, en estos eventos se puede aprender más o menos, pero lo que sí se puede hacer seguro es un poco de networking. Si estás buscando trabajo ya sea porque no tienes o porque no te gusta el que tienes, preséntate y comparte tus inquietudes. Si quieres conocer cosas más interesantes de las que haces, ven a escuchar lo que te podemos contar o propon otros temas. Si no pones un poco de tu parte, tampoco es normal que estés todo el día quejándote de tu situación (lo siento pero es mi opinión)&lt;/p&gt;  &lt;p&gt;Quería acabar este artículo con mis conclusiones acerca de todo esto, pero me voy a guardar mi opinión. Ayer tuve la oportunidad de discutirla delante de unas cervezas (y la cola zero de rigor) con los que siempre están ahí (gracias, por cierto… si no fuera por vosotros seguramente ya me habría rendido y me limitaría a grabar screencasts para colgarlos en el blog)&lt;/p&gt;  &lt;p&gt;Por cierto, evidentemente algunos de vosotros tendréis vuestras razones para no venir, faltaría más. Mi crítica es a nivel general y no quiero que ahora os sintáis todos ofendidos y me vengáis con: “cabrón, yo tenía una entrega ese día y no podía ir”. Los que estáis en esta situación seguro que me entendéis y no os dais por aludidos.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205202" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/davidmartos/archive/tags/_5B00_offtopic_5D00_/default.aspx">[offtopic]</category></item><item><title>C# Closures y tipos anónimos a la Javascript</title><link>http://geeks.ms/blogs/lontivero/archive/2012/05/24/c-closures-y-tipos-an-243-nimos-a-la-javascript.aspx</link><pubDate>Thu, 24 May 2012 05:13:28 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205199</guid><dc:creator>Lucas Ontivero</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Es C# realmente dinámico? Si hace Cuac es un pato, si hace lo mismo que un lenguaje dinámico es dinámico. Qué te dice este código:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/lontivero/image_5F00_605E376E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/lontivero/image_5F00_thumb_5F00_57418620.png" width="586" height="590" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205199" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Patterns/default.aspx">Patterns</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Dise_26002300_241_3B00_o/default.aspx">Dise&amp;#241;o</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Languages/default.aspx">Languages</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Patrones/default.aspx">Patrones</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Conceptos/default.aspx">Conceptos</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Nivelando para abajo</title><link>http://geeks.ms/blogs/lontivero/archive/2012/05/24/nivelando-para-abajo.aspx</link><pubDate>Thu, 24 May 2012 03:44:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205197</guid><dc:creator>Lucas Ontivero</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Leía &lt;a href="http://geeks.ms/blogs/lruiz/archive/2012/05/22/pregunta-191-cu-225-l-es-la-salida-de-este-programa.aspx"&gt;este post de Luis Ruiz Pavon&lt;/a&gt; acerca del comportamiento de los closures en el que Luis anima a responder cual es la salida de un bloque de código en el que se devuelve un array de expresiones lambdas que referencian a la variable utilizada para iterar dicho array (closures) y entonces veo este comentario de &lt;a href="http://geeks.ms/user/Profile.aspx?UserID=5172"&gt;Eduard Tomàs i Avellana&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/lontivero/image_5F00_31F5FFF4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/lontivero/image_5F00_thumb_5F00_5E5EE440.png" width="640" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El link al que referencia Eduard pertenece al blog de Eric Lippert: &lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx"&gt;Closing over the loop variable considered harmful&lt;/a&gt;, una vieja entrada que había leído en su oportunidad pero que desestimé porque nunca pensé que llegara a tomarse la decisión de introducir un breaking change en el lenguaje para solucionar algo que &lt;strong&gt;NO ESTÁ ROTO&lt;/strong&gt;, repito,&lt;strong&gt; NO ESTÁ ROTO&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Está claro que introducir este tipo de cambios no le gusta a nadie, y que por lo tanto debe de haberse meditado, y mucho. Pero ¿qué es lo que anima semejante cosa? Es decir, si vamos a romperle el código a muchos programadores es porque pensamos que es lo mejor para todos, ¿o no?&lt;/p&gt;  &lt;p&gt;Veamos, ¿quiénes pueden verse afectados? de seguro todos aquellos que entiendan lo que son los closures y comprendan el scope de las variables y, ¿quienes pueden verse beneficiados? pues todos aquellos que no entienden esto. Y es por eso que estoy en desacuerdo, porque lo que se intenta una vez más es hacer que el lenguaje sea el guardián de la correctitud del software y no el desarrollado.&lt;/p&gt;  &lt;p&gt;En mi experiencia, &lt;strong&gt;es absolutamente imposible defenderse de un desarrollador que no sabe lo que hace&lt;/strong&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205197" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/Conceptos/default.aspx">Conceptos</category><category domain="http://geeks.ms/blogs/lontivero/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>SharePoint 2010: Tipos de campo soportados como “Projected Fields” al relacionar listas!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/23/sharepoint-2010-tipos-de-campo-soportados-como-projected-fields-al-relacionar-listas.aspx</link><pubDate>Wed, 23 May 2012 21:22:05 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205195</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Cómo sabéis, en SharePoint 2010 (como en la versión predecesora) es posible relacionar dos listas a través de columnas de tipo búsqueda (Lookup). La novedad que incorporó SharePoint 2010 es que además de relacionar dos listas mediante un campo de búsqueda definido en la lista padre que apunte a una columna de la lista hija, podemos traer columnas adicionales de la lista hija a través de la &lt;a href="http://msdn.microsoft.com/en-us/library/ee535502.aspx"&gt;característica de campos proyectados&lt;/a&gt;. Ahora bien, hay que tener en cuenta que no todos los campos definidos en la lista hija pueden ser campos proyectados…en concreto, los siguientes tipo de campos se soportan como proyectados al relacionar dos listas y por ende se pueden usar en consultas CAML definidas a las dos listas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Calculated (treated as plain text). &lt;/li&gt;    &lt;li&gt;ContentTypeId. &lt;/li&gt;    &lt;li&gt;Counter. &lt;/li&gt;    &lt;li&gt;Currency. &lt;/li&gt;    &lt;li&gt;DateTime. &lt;/li&gt;    &lt;li&gt;Guid. &lt;/li&gt;    &lt;li&gt;Integer. &lt;/li&gt;    &lt;li&gt;Note (one-line only). &lt;/li&gt;    &lt;li&gt;Number. &lt;/li&gt;    &lt;li&gt;Text. &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Por último, os recomiendo que reviséis la sección de la &lt;a href="http://msdn.microsoft.com/en-us/library/ff921345"&gt;SharePoint Guidance&lt;/a&gt; en la que se tratan estos temas y en los que se resumen de forma muy esquematizada:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Como relacionar dos listas mediante campos de lookup.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Como se define un campo de lookup en SharePoint 2010.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="677" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="374"&gt;&lt;img title="Ff798514.84ceee0b-1351-487a-a0b6-e10050bb1998(en-us,PandP.10).png" alt="Ff798514.84ceee0b-1351-487a-a0b6-e10050bb1998(en-us,PandP.10).png" src="http://i.msdn.microsoft.com/dynimg/IC423567.png" width="240" height="83" /&gt;&lt;/td&gt;          &lt;td valign="top" width="301"&gt;&lt;img title="Ff798514.ae9fd5b2-ccab-481f-84e2-56d0efeac718(en-us,PandP.10).png" alt="Ff798514.ae9fd5b2-ccab-481f-84e2-56d0efeac718(en-us,PandP.10).png" src="http://i.msdn.microsoft.com/dynimg/IC416779.png" width="240" height="171" /&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;Referencias:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff798514.aspx"&gt;List Relationships in SharePoint 2010&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee539975.aspx"&gt;List Joins and Projections&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205195" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Foundation+2010/default.aspx">SharePoint Foundation 2010</category></item><item><title>[#VS2010] Error con ASP.Net MVC y el IIS en Windows 8</title><link>http://geeks.ms/blogs/elbruno/archive/2012/05/23/vs2010-error-con-asp-net-mvc-y-el-iis-en-windows-8.aspx</link><pubDate>Wed, 23 May 2012 17:27:38 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205193</guid><dc:creator>El Bruno</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://brunocapuano.files.wordpress.com/2011/04/image20.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2011/04/image20.png" width="464" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Buenas,&lt;/p&gt;  &lt;p&gt;hoy estaba por comenzar a trabajar en un flamante proyecto de ASP.Net MVC en mi Visual Studio 2010 sobre Windows 8, cuando me encontré con lo siguiente:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_290B4028.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_10A04E2D.png" width="491" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;---------------------------    &lt;br /&gt;Microsoft Visual Studio     &lt;br /&gt;---------------------------     &lt;br /&gt;ASP.NET 4.0 has not been registered on the Web server. You need to manually configure your Web server for ASP.NET 4.0 in order for your site to run correctly.     &lt;br /&gt;---------------------------     &lt;br /&gt;OK&amp;#160;&amp;#160; Help&amp;#160;&amp;#160; &lt;br /&gt;---------------------------&lt;/p&gt;  &lt;p&gt;Chan! de nuevo Windows 8 haciendo de las suyas, pero claro en realidad fui yo que probando unos scripts eliminé unas features de Windows. Así que desde la opción “Turn Windows features on or off”, simplemente elegimos las que son necesarias para ASP.Net 3.5 y ASP.Net 4.5 y listo!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_37930FC2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_5914D002.png" width="429" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;si es que, estos días arreglo una cosa y rompo 2 !!!&lt;/p&gt;  &lt;p&gt;Saludos @ Home&lt;/p&gt;  &lt;p&gt;El Bruno&lt;/p&gt;  &lt;table cellspacing="0" width="110" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="36"&gt;&lt;a href="http://facebook.com/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image2.png" width="41" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="36"&gt;&lt;a href="http://es.linkedin.com/in/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image3.png" width="41" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="36"&gt;&lt;a href="https://twitter.com/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image4.png" width="40" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205193" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>WebCast de fin de mes – SQL Server 2012 y MS Dynamics GP</title><link>http://geeks.ms/blogs/juanrafael/archive/2012/05/23/webcast-de-fin-de-mes-sql-server-2012-y-ms-dynamics-gp.aspx</link><pubDate>Wed, 23 May 2012 14:47:54 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205192</guid><dc:creator>Juan Rafael</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Hola a todos.&lt;/p&gt;  &lt;p&gt;Para cerrar este mes, estaré ejecutando 2 WebCast sobre SQL Server y MS Dynamics GP 2010.&lt;/p&gt;  &lt;p&gt;Detalles:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Lo Nuevo en las Ediciones de SQL Server 2012&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=HBFM7N&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=HBFM7N&amp;amp;role=attend&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;26 de Mayo&lt;/li&gt;      &lt;li&gt;4:00pm (GMT-5)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Microsoft Dynamics GP 2010 y la Nube&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=4ZQMWP&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=4ZQMWP&amp;amp;role=attend&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;26 de Mayo&lt;/li&gt;      &lt;li&gt;5:30pm (GMT-5)&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Saludos,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205192" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/Microsoft+Dynamics+GP+2010+R2/default.aspx">Microsoft Dynamics GP 2010 R2</category><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category></item><item><title>Todas las Ciudades del Planeta. Parte 1</title><link>http://geeks.ms/blogs/jkpelaez/archive/2012/05/23/todas-las-ciudades-del-planeta-parte-1.aspx</link><pubDate>Wed, 23 May 2012 12:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205191</guid><dc:creator>jkpelaez</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Por diversas razones en varios proyectos para clientes hemos tenido que crear una lista de pa&amp;iacute;ses, ciudades, idiomas. Ahora que estamos trabajando en &lt;a href="http://www.thecompanytool.com/"&gt;the Company Tool&lt;/a&gt; (Una herramienta de seguimiento y control de la operaci&amp;oacute;n para compa&amp;ntilde;&amp;iacute;as peque&amp;ntilde;as y medianas) nos encontramos con el mismo asunto e incluso ampliado porque necesitamos la lista de todos los pa&amp;iacute;ses y ciudades del mundo, as&amp;iacute; que decidimos revisar un poco mejor si hay algo que pod&amp;iacute;amos hacer para no repetirnos y tener este problema resulto de una mejor forma. Este art&amp;iacute;culo es el producto de esa investigaci&amp;oacute;n y el c&amp;oacute;digo que construimos.&lt;/p&gt;
&lt;h1&gt;Informaci&amp;oacute;n de todos las Ciudades.&lt;/h1&gt;
&lt;p&gt;Lo primero era obtener la lista de todos los pa&amp;iacute;ses y ciudades del mundo, eso ten&amp;iacute;a que existir en alguna parte as&amp;iacute; que luego de un rato en internet encontramos que pod&amp;iacute;amos copiarla a mano de Wikipedia o consumir un servicio llamado &lt;a href="http://www.geonames.org/"&gt;GeoNames&lt;/a&gt; que no solo incluye Wikipedia sino muchas m&amp;aacute;s &lt;a href="http://www.geonames.org/data-sources.html"&gt;fuentes&lt;/a&gt;, este servicio expone unos Servicios Web (web services) con JSON o XML donde se pueden realizar una serie de consultas asociadas a cualquier ciudad o pa&amp;iacute;s del mundo, sin embargo tiene unos limites de uso (30.000 peticiones por d&amp;iacute;a y 2.000 por hora) y no quer&amp;iacute;amos depender de un servicio externo por m&amp;aacute;s que este parece bastante confiable, tomamos entonces la otra opci&amp;oacute;n y descargamos la &lt;a href="http://download.geonames.org/export/dump/"&gt;data&lt;/a&gt;. Ahora bien procesar 2 GB de datos no result&amp;oacute; tan sencillo.&lt;/p&gt;
&lt;p&gt;Lo segundo era cargarlos a nuestro SQL 2008 R2 para poder hacer consultas, explorar las capacidades de georeferenciaci&amp;oacute;n (Datos geogr&amp;aacute;ficos) incluidos en SQL y construir nuestro propio servicio.&lt;/p&gt;
&lt;h1&gt;Cargando la Data de GeoNames en SQL Server 2008 R2.&lt;/h1&gt;
&lt;p&gt;Antes que nada hay que transformar el archivo que venia en formato UTF8 a UTF16. Algunas recomendaciones en Internet dicen que puede importarse con el asistente de SQL y la opci&amp;oacute;n de encoding del archivo, pero no funcion&amp;oacute; aunque le dimos varias vueltas as&amp;iacute; que utilizamos esta &lt;a href="http://forum.geonames.org/gforum/posts/list/817.page"&gt;herramienta&lt;/a&gt;, que convierte el archivo desde UTF8 a UTF16 y que funcion&amp;oacute; perfectamente.&lt;/p&gt;
&lt;p&gt;Luego construimos una tabla en la base de datos con la estructura del archivo:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--CREATE TABLE Core.GeoNames(&lt;br /&gt;--geonameid int NOT NULL,&lt;br /&gt;--name nvarchar(200) NULL,&lt;br /&gt;--asciiname nvarchar(200) NULL,&lt;br /&gt;--alternatenames nvarchar(max) NULL,&lt;br /&gt;--latitude float NULL,&lt;br /&gt;--longitude float NULL,&lt;br /&gt;--feature_class char(2) NULL,&lt;br /&gt;--feature_code nvarchar(10) NULL,&lt;br /&gt;--country_code char(3) NULL,&lt;br /&gt;--cc2 char(60) NULL,&lt;br /&gt;--admin1_code nvarchar(20) NULL,&lt;br /&gt;--admin2_code nvarchar(80) NULL,&lt;br /&gt;--admin3_code nvarchar(20) NULL,&lt;br /&gt;--admin4_code nvarchar(20) NULL,&lt;br /&gt;--population bigint NULL,&lt;br /&gt;--elevation int NULL,&lt;br /&gt;--gtopo30 int NULL,&lt;br /&gt;--timezone char(31) NULL,&lt;br /&gt;--modification_date date NULL)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Luego insertamos la data desde el nuevo archivo convertido en UTF16 en nuestra base de datos.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--BULK INSERT Core.GeoNames&lt;br /&gt;--FROM &amp;#39;C:\Reference\GeoNames\utf16Allcountries.txt&amp;#39;&lt;br /&gt;--WITH( DATAFILETYPE = &amp;#39;widechar&amp;#39;,&lt;br /&gt;-- FIELDTERMINATOR = &amp;#39;\t&amp;#39;,&lt;br /&gt;-- ROWTERMINATOR = &amp;#39;\n&amp;#39;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--Select top 1000 * from Core.GeoNames&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En este punto ya tenemos la data cargada y pod&amp;iacute;amos hacer consultas sobre ella, incluso tenemos unos campos con latitud y longitud pero no estamos aprovechando el poder de los datos geogr&amp;aacute;ficos de SQL Server 2008 R2 (incluso en su versi&amp;oacute;n Express que es gratuita). As&amp;iacute; que modificamos la tabla de GeoNames para incluir un campo geogr&amp;aacute;fico. (Los campos geogr&amp;aacute;ficos incluyen en su an&amp;aacute;lisis la curvatura de la tierra, los campos geom&amp;eacute;tricos no, as&amp;iacute; que si uno quiere analizar cosas peque&amp;ntilde;as como una bodega, almac&amp;eacute;n, etc, usando sus coordenadas gps y georeferenciacion debe usar campos geom&amp;eacute;tricos, pero ese es tema de otro post)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--ALTER TABLE Core.GeoNames&lt;br /&gt;-- ADD geog GEOGRAPHY NULL&lt;br /&gt;--GO&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Creado el campo geogr&amp;aacute;fico hay que actualizarlo con la informaci&amp;oacute;n de cada punto, n&amp;oacute;tese aqu&amp;iacute; como se construye el campo utilizando la funci&amp;oacute;n POINT a la que le pasamos la longitud y latitud. (Curiosamente si se integra luego esto con GoogleMaps ellos utilizan latitud y longitud)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--UPDATE Core.GeoNames&lt;br /&gt;-- SET geog = GEOGRAPHY::STGeomFromText&lt;br /&gt;-- (&amp;#39;POINT(&amp;#39; + CAST(longitude AS CHAR(20))&lt;br /&gt;-- + &amp;#39; &amp;#39; + CAST(latitude AS CHAR(20)) + &amp;#39;)&amp;#39;,4326)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un par de &amp;iacute;ndices son buenos y necesarios para las consultas sobre 9 millones de registros tengan un rendimiento aceptable.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--ALTER TABLE Core.GeoNames&lt;br /&gt;-- ADD CONSTRAINT pk_geonames_geonameid&lt;br /&gt;-- PRIMARY KEY (geonameid)&lt;br /&gt;--GO&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE SPATIAL INDEX geonames_mmmm16_sidx&lt;br /&gt;-- ON Core.GeoNames(geog)&lt;br /&gt;-- USING GEOGRAPHY_GRID&lt;br /&gt;-- WITH (&lt;br /&gt;-- GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM),&lt;br /&gt;-- CELLS_PER_OBJECT = 16,&lt;br /&gt;-- PAD_INDEX = ON&lt;br /&gt;-- )&lt;br /&gt;--GO&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La informaci&amp;oacute;n descriptiva de los pa&amp;iacute;ses, regiones e idiomas tambi&amp;eacute;n esta disponible en los archivos:&lt;/p&gt;
&lt;p&gt;countryInfo.txt, admin2Codes.txt, admin1CodesASCII.txt, iso-languagecodes.txt, timeZones.txt&lt;/p&gt;
&lt;p&gt;Con sus correspondientes scripts:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[TimeZones](&lt;br /&gt;-- [CountryCode] [nvarchar](255) NULL,&lt;br /&gt;-- [TimeZoneId] [nvarchar](255) NULL,&lt;br /&gt;-- [GMT offset 1# Jan 2012] [float] NULL,&lt;br /&gt;-- [DST offset 1# Jul 2012] [float] NULL,&lt;br /&gt;-- [rawOffset (independant of DST)] [float] NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[Iso-LanguageCodes](&lt;br /&gt;-- [ISO 639-3] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO 639-2] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO 639-1] [nvarchar](255) NULL,&lt;br /&gt;-- [Language Name] [nvarchar](255) NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[countryInfo](&lt;br /&gt;-- [ISO] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO3] [nvarchar](255) NULL,&lt;br /&gt;-- [ISO-Numeric] [float] NULL,&lt;br /&gt;-- [fips] [nvarchar](255) NULL,&lt;br /&gt;-- [Country] [nvarchar](255) NULL,&lt;br /&gt;-- [Capital] [nvarchar](255) NULL,&lt;br /&gt;-- [Area] [float] NULL,&lt;br /&gt;-- [Population] [float] NULL,&lt;br /&gt;-- [Continent] [nvarchar](255) NULL,&lt;br /&gt;-- [tld] [nvarchar](255) NULL,&lt;br /&gt;-- [CurrencyCode] [nvarchar](255) NULL,&lt;br /&gt;-- [CurrencyName] [nvarchar](255) NULL,&lt;br /&gt;-- [Phone] [float] NULL,&lt;br /&gt;-- [Postal Code Format] [nvarchar](255) NULL,&lt;br /&gt;-- [Postal Code Regex] [nvarchar](255) NULL,&lt;br /&gt;-- [Languages] [nvarchar](255) NULL,&lt;br /&gt;-- [geonameid] [float] NULL,&lt;br /&gt;-- [neighbours] [nvarchar](255) NULL,&lt;br /&gt;-- [EquivalentFipsCode] [nvarchar](255) NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--CREATE TABLE [Core].[AdminCodes](&lt;br /&gt;-- [adminCode] [nvarchar](255) NULL,&lt;br /&gt;-- [name] [nvarchar](255) NULL,&lt;br /&gt;-- [fullName] [nvarchar](255) NULL,&lt;br /&gt;-- [geonamesId] [float] NULL&lt;br /&gt;--) ON [PRIMARY]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Esta informaci&amp;oacute;n nos permite crear una estructura de datos desde la cual podemos consultar los estados de un pa&amp;iacute;s (departamentos, provincias), las ciudades que hacen parte de ese estado y muchas m&amp;aacute;s consultas sobre proximidad, por ejemplo cual es la ciudad de m&amp;aacute;s de 15.000 habitantes m&amp;aacute;s cercana a mi punto actual.&lt;/p&gt;
&lt;p&gt;Unas consultas r&amp;aacute;pidas para entender la estructura de datos generada:&lt;/p&gt;
&lt;p&gt;Lista de Pa&amp;iacute;ses: (mejor obtenerla de la tabla countryInfo):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;Select * from CoreDB.Core.GeoNames Where&lt;br /&gt;Feature_code = &amp;#39;PCLI&amp;#39;&lt;br /&gt;Order by Name&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lista de Departamentos (regiones, provincias) de un pa&amp;iacute;s:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--deptos o primer nivel&lt;br /&gt;Select top 100 * from CoreDB.Core.GeoNames Where&lt;br /&gt;Country_code =&amp;#39;CO&amp;#39; and Feature_code = &amp;#39;ADM1&amp;#39;&lt;br /&gt;Order By name&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Donde CO es el c&amp;oacute;digo del pa&amp;iacute;s.&lt;br /&gt;Lista de las ciudades que pertenecen a un depto&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;--Ciudades o segundo nivel&lt;br /&gt;Select * from CoreDB.Core.GeoNames Where&lt;br /&gt;Country_code =&amp;#39;CO&amp;#39; and Admin1_code = 02 and Feature_code = &amp;#39;ADM2&amp;#39;&lt;br /&gt;Order By name&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Donde CO es el c&amp;oacute;digo del pa&amp;iacute;s, en este caso Colombia, y Admin1_code es el c&amp;oacute;digo del departamento (regi&amp;oacute;n, provincia) seleccionado anteriormente.&lt;/p&gt;
&lt;p&gt;Con estos datos estamos listos para construir una capa de servicios que exponga esta informaci&amp;oacute;n, eso lo haremos en la segunda parte.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Juan Pel&amp;aacute;ez&lt;br /&gt;Arquitecto de software&lt;br /&gt;&lt;a href="http://www.3metas.com/"&gt;3Metas Corp.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.juanpelaez.com/"&gt;www.juanpelaez.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Referencias:&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.geonames.org/"&gt;http://www.geonames.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.geonames.org/export/codes.html"&gt;http://www.geonames.org/export/codes.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://midnightprogrammer.net/post/Integrate-Bing-Maps-With-Geonames-Database-And-ASPNET.aspx"&gt;http://midnightprogrammer.net/post/Integrate-Bing-Maps-With-Geonames-Database-And-ASPNET.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forum.geonames.org/gforum/posts/list/817.page"&gt;http://forum.geonames.org/gforum/posts/list/817.page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/edkatibah/archive/2009/01/13/loading-geonames-data-into-sql-server-2008-yet-another-way.aspx"&gt;http://blogs.msdn.com/b/edkatibah/archive/2009/01/13/loading-geonames-data-into-sql-server-2008-yet-another-way.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nota: Algunas de estas operaciones de procesamiento del archivo, creaci&amp;oacute;n de &amp;iacute;ndices, etc., toman varios minutos, m&amp;aacute;s de 10, en mi maquina de escritorio que es una buena maquina.&lt;/p&gt;
&lt;p&gt;Continent codes :&lt;br /&gt;AF : Africa geonameId=6255146&lt;br /&gt;AS : Asia geonameId=6255147&lt;br /&gt;EU : Europe geonameId=6255148&lt;br /&gt;NA : North America geonameId=6255149&lt;br /&gt;OC : Oceania geonameId=6255151&lt;br /&gt;SA : South America geonameId=6255150&lt;br /&gt;AN : Antarctica geonameId=6255152&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205191" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://geeks.ms/blogs/jkpelaez/archive/tags/GeoReferenciacion/default.aspx">GeoReferenciacion</category></item><item><title>SharePoint Online: Microsoft incrementa “y bastante” el número de usuarios externos que se pueden invitar!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/23/sharepoint-online-microsoft-incrementa-y-bastante-el-n-250-mero-de-usuarios-externos-que-se-pueden-invitar.aspx</link><pubDate>Wed, 23 May 2012 08:24:42 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205187</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;SharePoint Online (SPO) en Office 365 permite modelar escenarios Extranet en los que puedan colaborar usuarios externos a partir de la característica de “Invitar a usuarios externos” disponible tanto para planes P como para planes E. Hasta ahora esta característica tenía unas limitaciones que Microsoft ha decidido mejorar ya que:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;En planes P sólo se podía invitar hasta 50 usuarios externos, y si necesitabas invitar a más usuarios externos no te quedaba otra que cambiar a un plan de tipo E.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;En planes E, se incluía en el precio la invitación a 50 usuarios externos y si necesitabas más podías adquirir paquetes adicionales de invitaciones a 50 usuarios externos.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Por suerte, y como se comenta en &lt;a href="http://thecloudmouth.com/2012/05/23/microsoft-increases-partner-access-licenses-for-sharepoint-online/"&gt;este enlace&lt;/a&gt;, estos límites se han extendido ampliamente de manera que en planes P se pueden invitar hasta a 500 usuarios externos y en planes E ya no hay límite…simplemente genial.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-Online-Microsoft-incrementa-y_92D0/image.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-Online-Microsoft-incrementa-y_92D0/image_thumb.png" width="644" height="476" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205187" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Online/default.aspx">SharePoint Online</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Office+365/default.aspx">Office 365</category></item><item><title>Access básico (José Bengoechea Ibaceta)</title><link>http://geeks.ms/blogs/juansa/archive/2012/05/23/access-b-225-sico-jos-233-bengoechea-ibaceta.aspx</link><pubDate>Wed, 23 May 2012 05:50:19 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205185</guid><dc:creator>Juansa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;font size="3" face="Tahoma"&gt;No siempre se ha de hablar de Windows Server, jejejeje&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Tahoma"&gt;Hoy pongo una noticia sobre un libro de Access que acaba de publicar un colega y amigo MVP de los veteranos.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Tahoma"&gt;Así que si estás dando tus primeros pasos en access, este libro está pensado para tí.&lt;/font&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="2" cellpadding="2" width="788"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="425"&gt;         &lt;p&gt;&lt;font size="3" face="Arial Black"&gt;&lt;img style="margin:10px 10px 0px 0px;" src="http://access.bengoechea.net/_/rsrc/1335265352669/Home/libro-de-access/libro.jpg" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;José Bengoechea Ibaceta&lt;/strong&gt; (Santoña [Cantabria], 1959) ha sido reconocido por Microsoft&lt;strong&gt;&lt;sup&gt;®&lt;/sup&gt;&lt;/strong&gt; como MVP (Most Valuable Professional) Access&lt;strong&gt;&lt;sup&gt;®&lt;/sup&gt;&lt;/strong&gt; en los años 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 y 2011; este es un galardón anual que reconoce la labor de los líderes excepcionales de la comunidad tecnológica de todo el mundo que, de forma activa, comparten con los demás y con Microsoft su valiosa experiencia técnica en situaciones reales.            &lt;br /&gt;Además, ha creado diversas aplicaciones de gestión para pymes y, en su puesto de trabajo como funcionario de un cuerpo de gestión, utiliza de forma habitual Microsoft Access.            &lt;br /&gt;Bien conocido en foros y grupos de noticias de Internet sobre Access por su activa participación durante años, mantiene uno de los sitios web sobre programación en Access más veteranos y conocidos en español, «Utilidades Access» (&lt;u&gt;&lt;a href="http://jbengoechea.com/"&gt;http://jbengoechea.com&lt;/a&gt;&lt;/u&gt;). En relación con Access, es autor de otro sitio web, «Access siglo xxi» (&lt;u&gt;&lt;a href="http://jbchea.net/"&gt;http://jbchea.net&lt;/a&gt;&lt;/u&gt;), y coautor de un &lt;em&gt;blog&lt;/em&gt; (&lt;u&gt;&lt;a href="http://geeks.ms/blogs/access"&gt;http://geeks.ms/blogs/access&lt;/a&gt;&lt;/u&gt;).            &lt;br /&gt;Coincidiendo con el lanzamiento de Office&lt;strong&gt;&lt;sup&gt;®&lt;/sup&gt;&lt;/strong&gt; 2007, colaboró en la elaboración de varios artículos sobre Access en el «Rincón del experto» (&lt;u&gt;&lt;a href="http://www.microsoft.com/spain/office/rincondelexperto"&gt;http://www.microsoft.com/spain/office/rincondelexperto&lt;/a&gt;&lt;/u&gt;).&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="355"&gt;         &lt;h5&gt;&lt;font face="Arial Black"&gt;&lt;/font&gt;&lt;/h5&gt;          &lt;h5&gt;&lt;font face="Arial Black"&gt;&lt;/font&gt;&lt;/h5&gt;          &lt;h5&gt;&lt;font face="Arial Black"&gt;Cómpralo con un 20% de descuento&lt;/font&gt;&lt;/h5&gt;          &lt;p&gt;&lt;font face="Arial Black"&gt;Aunque su precio original es de 24,095€, puedes obtener un 20% de descuento en la compra del libro por ser lector de esta página.&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Arial Black"&gt;Para ello, debes enviar un correo a &lt;/font&gt;&lt;a href="mailto:pedidos@ideaspropiaseditorial.com"&gt;&lt;font face="Arial Black"&gt;pedidos@ideaspropiaseditorial.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial Black"&gt; con el código &lt;strong&gt;BLOGACCESSXXI&lt;/strong&gt;. Este descuento solo se aplicará a las ventas directas, es decir, solo a los usuarios que realicen el pedido a través del correo mencionado (&lt;a href="mailto:pedidos@ideaspropiaseditorial.com"&gt;pedidos@ideaspropiaseditorial.com&lt;/a&gt;).&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="3" face="Tahoma"&gt;&lt;a href="http://missideaspropias.blogspot.com.es/2012/04/entrevistamos-jose-bengoechea-autor-de.html" target="_blank"&gt;Entrevista al autor&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=35-qkVDxrzU&amp;amp;feature=youtu.be" target="_blank"&gt;&lt;font size="3" face="Tahoma"&gt;Demo del CD&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;Microsoft&lt;sup&gt;®&lt;/sup&gt; Access&lt;sup&gt;® &lt;/sup&gt;no es solo un sistema de gestión de bases de datos, sino también un entorno de desarrollo rápido de aplicaciones. El contenido de este libro está orientado precisamente al aprendizaje de esas posibilidades de desarrollo.            &lt;br /&gt;Está concebido como una guía de iniciación en la que se explican los conceptos, objetos y mecanismos que en su conjunto forman una aplicación. En el momento de escribir el libro, ya se había lanzado una nueva versión, Access 2010, también con grandes mejoras. No es problema; desde el principio, la perspectiva está puesta en el futuro, de manera que, cuando algo cambia, se explica cómo es en una y otra versión.            &lt;br /&gt;Además, este material didáctico incorpora un CD, en el que se incluyen videotutoriales que le servirán de apoyo educativo para dominar esta aplicación y, así, poder gestionar cualquier tipo de información sin la menor dificultad.            &lt;br /&gt;José Bengoechea Ibaceta, reconocido por Microsoft como MVP (Most Valuable Professional) desde 2003 hasta 2011 por su labor como líder excepcional dentro de la comunidad tecnológica, es el autor de esta obra didáctica publicada por Ideaspropias Editorial.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Tahoma"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205185" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juansa/archive/tags/Noticias/default.aspx">Noticias</category><category domain="http://geeks.ms/blogs/juansa/archive/tags/Otros/default.aspx">Otros</category></item><item><title>[Windows Phone 7.5 tip] Listas infinitas</title><link>http://geeks.ms/blogs/jyeray/archive/2012/05/23/windows-phone-7-5-tip-listas-infinitas.aspx</link><pubDate>Wed, 23 May 2012 04:44:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205184</guid><dc:creator>Josué Yeray Julián Ferreiro</dc:creator><slash:comments>1</slash:comments><description>Hola a todos! Estos d&amp;iacute;as he estado jugando con el listbox de Windows Phone para hacer una lista infinita, es decir, que cuando el usuario haga scroll hasta el final de la lista, est&amp;aacute; se lo notifique al ViewModel para que se pidan m&amp;aacute;s datos. De esta forma podemos evitar el cargar demasiados datos al inicio, lo que ralentizar&amp;iacute;a la carga e ir solicit&amp;aacute;ndolos a medida que el usuario los necesite, podemos ver un ejemplo del funcionamiento de esta t&amp;eacute;cnica en la...(&lt;a href="http://geeks.ms/blogs/jyeray/archive/2012/05/23/windows-phone-7-5-tip-listas-infinitas.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205184" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jyeray/archive/tags/wpdev/default.aspx">wpdev</category><category domain="http://geeks.ms/blogs/jyeray/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://geeks.ms/blogs/jyeray/archive/tags/WP75/default.aspx">WP75</category><category domain="http://geeks.ms/blogs/jyeray/archive/tags/eswp7/default.aspx">eswp7</category><category domain="http://geeks.ms/blogs/jyeray/archive/tags/nokia_5F00_dev/default.aspx">nokia_dev</category></item><item><title>Bases de Datos en Exchange 2010</title><link>http://geeks.ms/blogs/mojeda/archive/2012/05/22/bases-de-datos-en-exchange-2010.aspx</link><pubDate>Tue, 22 May 2012 18:25:54 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205175</guid><dc:creator>M@rTIn's</dc:creator><slash:comments>0</slash:comments><description>Hay algunos cambios en la estructura de las bases de datos en Exchange 2010 el primer cambio es que los storage groups ya no van, una buena practica en Exchange 2007 era tener una base de dato por Storage Groups en Exchange 2010 los Storage Groups fueron integrados dentro de las bases de datos. Cada base de datos contiene un grupo de Transaction logs una buena practica es ponerlos en un disco aparte ya que esto permite en caso de un disaster recovery reconstruir la bases de datos si se encuentran...(&lt;a href="http://geeks.ms/blogs/mojeda/archive/2012/05/22/bases-de-datos-en-exchange-2010.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205175" width="1" height="1"&gt;</description></item><item><title>SharePoint 2010, como herramienta de BI</title><link>http://geeks.ms/blogs/fabianimaz/archive/2012/05/22/sharepoint-2010-como-herramienta-de-bi.aspx</link><pubDate>Tue, 22 May 2012 17:37:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205181</guid><dc:creator>Fabián Imaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;El pasado 21 de Mayo tuve el inmenso placer de compartir una nueva sesión en la Comunidad de SharePoint Costa Rica, en la cual estuve hablando de la como podemos usar SharePoint 2010 como una herramienta de BI. Quiero agradecer a Vielka y Ricardo por darme la oportunidad de participar y compartir una hora con todos ellos. &lt;/p&gt;  &lt;p&gt;Quiero agradecer a las personas de &lt;a href="http://adltcr.com/"&gt;Advanced Lerning&lt;/a&gt; por su disposición y colaboración ya que nos abrieron las puertas de su centro de entrenamiento, muchas gracias!! &lt;/p&gt;  &lt;p&gt;Pueden descargar la presentación desde mi &lt;a href="http://sdrv.ms/LlPxHM"&gt;SkyDrive&lt;/a&gt; o desde el sitio de la &lt;a href="http://sharepointcostarica.com/SitePages/Inicio.aspx"&gt;comunidad de Costa Rica&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Recuerden escribirnos con los temas que les gustarían escuchar en futuras charlas de la comunidad.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sdrv.ms/LlPxHM"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="BI SharePoint 2010 PerformancePoint_Metro" border="0" alt="BI SharePoint 2010 PerformancePoint_Metro" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/BI_2D00_SharePoint_2D00_2010_2D00_PerformancePoint_5F00_Metro_5F00_51C6790F.jpg" width="650" height="504" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Fotos del evento&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400" align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/WP_5F00_001506_5F00_7A81DE58.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WP_001506" border="0" alt="WP_001506" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/WP_5F00_001506_5F00_thumb_5F00_2C9908D6.jpg" width="343" height="263" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/WP_5F00_001507_5F00_3D3103C4.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WP_001507" border="0" alt="WP_001507" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/WP_5F00_001507_5F00_thumb_5F00_5A56ABCE.jpg" width="344" height="264" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr align="center"&gt;       &lt;td valign="top" width="200" colspan="2" align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/WP_5F00_001508_5F00_51F2D677.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WP_001508" border="0" alt="WP_001508" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fabianimaz/WP_5F00_001508_5F00_thumb_5F00_4EFD71C4.jpg" width="343" height="263" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205181" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/fabianimaz/archive/tags/SharePoint+Server+2010/default.aspx">SharePoint Server 2010</category><category domain="http://geeks.ms/blogs/fabianimaz/archive/tags/BI/default.aspx">BI</category></item><item><title>[Pregunta] ¿Cuál es la salida de este programa?</title><link>http://geeks.ms/blogs/lruiz/archive/2012/05/22/pregunta-191-cu-225-l-es-la-salida-de-este-programa.aspx</link><pubDate>Tue, 22 May 2012 10:59:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205162</guid><dc:creator>Luis Ruiz Pavón</dc:creator><slash:comments>12</slash:comments><description>class Program { static void Main( string [] args) { var arrayAction = new Action[10]; for (var i = 0; i &amp;lt; 10; i++) { arrayAction[i] = () =&amp;gt; Console.Write( &amp;quot;{0} &amp;quot; , i); } foreach (var action in arrayAction) { action(); } Console.Read(); } } a) 0 1 2 3 4 5 6 7 8 9 b) 1 2 3 4 5 6 7 8 9 10 c) 0 0 0 0 0 0 0 0 0 0 d) 10 10 10 10 10 10 10 10 10 10 Un saludo....(&lt;a href="http://geeks.ms/blogs/lruiz/archive/2012/05/22/pregunta-191-cu-225-l-es-la-salida-de-este-programa.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205162" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lruiz/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>SharePoint 2010: Cómo crear un flujo re-utilizable de forma global!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/22/sharepoint-2010-c-243-mo-crear-un-flujo-re-utilizable-de-forma-global.aspx</link><pubDate>Tue, 22 May 2012 09:30:39 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205161</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Como sabéis, con SharePoint 2010 contamos con la posibilidad de crear flujos de trabajo re-utilizables en SharePoint Designer 2010 (SPD 2010), es decir, flujos que no están “atados” a una lista concreta o incluso a un tipo de contenido concreto de manera que el flujo puede ser re-utilizado en todo el sitio vinculándolo a cualquier lista o tipo de contenido del mismo. Una pregunta que puede surgir es si es posible re-utilizar este flujo en otros sitios, la respuesta es que inicialmente no, pero podemos configurarlo para que sea globalmente re-utilizable:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Abrimos un sitio cualquiera con SPD 2010 y nos vamos a la sección de flujos de trabajo. Pulsamos la opción de la Ribbon que nos permite crear un flujo de trabajo re-utilizable.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;En la pantalla inicial de definición del flujo, especificamos un nombre y descripción para el mismo. En principio, no lo vinculamos a un tipo de contenido concreto.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;En el diseñador de flujos, modelamos un sencillo flujo de trabajo.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="750" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="250"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_thumb.png" width="244" height="79" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="250"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_thumb_3.png" width="244" height="170" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="250"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_thumb_4.png" width="244" height="127" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Guardamos el flujo y para publicarlo de forma global, no tenemos más que usar la opción correspondiente de la Ribbon (“Publish Globally”), de manera que se muestra un mensaje informativo indicando que el flujo se publicará en el catálogo de flujos globales de nuestro despliegue de SharePoint de manera que podremos utilizarlo en otros sitios.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Comprobamos que efectivamente el flujo aparece en otro sitio.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="677" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="374"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image12.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image12_thumb.png" width="244" height="103" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="301"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-2010-Cmo-crear-un-flujo-re-ut_7FF7/image_thumb_5.png" width="244" height="80" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205161" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Foundation+2010/default.aspx">SharePoint Foundation 2010</category></item><item><title>[Auges] Webcast sobre SignalR: ¡uau!</title><link>http://geeks.ms/blogs/jmaguilar/archive/2012/05/22/auges-webcast-sobre-signalr-161-uau.aspx</link><pubDate>Tue, 22 May 2012 07:15:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205146</guid><dc:creator>José M. Aguilar</dc:creator><slash:comments>0</slash:comments><description>Simplemente informaros de que el pr&amp;oacute;ximo jueves 24 de mayo a las 19:00h (hora peninsular espa&amp;ntilde;ola), participar&amp;eacute; en una charla con AUGES sobre SignalR, esa peque&amp;ntilde;a maravilla de la que ya os he hablado por aqu&amp;iacute; en varias ocasiones , una ayuda imprescindible a la hora de crear sistemas interactivos, multiusuario y en tiempo real para la web. El &amp;ldquo;cartel&amp;rdquo; oficial del evento es el siguiente: SIGNALR: APLICACIONES MULTIUSUARIO, AS&amp;Iacute;NCRONAS, Y EN TIEMPO...(&lt;a href="http://geeks.ms/blogs/jmaguilar/archive/2012/05/22/auges-webcast-sobre-signalr-161-uau.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205146" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jmaguilar/archive/tags/signalr/default.aspx">signalr</category><category domain="http://geeks.ms/blogs/jmaguilar/archive/tags/eventos/default.aspx">eventos</category><category domain="http://geeks.ms/blogs/jmaguilar/archive/tags/auges/default.aspx">auges</category></item><item><title>[VS2010+SP1+NuGet] Actualización manual de NuGet (copiando y pegando archivos) cuando tenemos problemas en la instalación/actualización en VS2010 SP1.</title><link>http://geeks.ms/blogs/fernandezja/archive/2012/05/22/vs2010-sp1-nuget-actualizaci-243-n-manual-de-nuget-copiando-y-pegando-archivos-cuando-tenemos-problemas-en-la-instalaci-243-n-actualizaci-243-n-en-vs2010-sp1.aspx</link><pubDate>Tue, 22 May 2012 02:54:50 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205157</guid><dc:creator>José A. Fernández</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Este problema es conocido desde la versión SP1 del VS2010, por lo menos a mi me toco vivenciar este problema en varias maquinas y esta documentado en los “&lt;a href="http://docs.nuget.org/docs/reference/known-issues" target="_blank"&gt;known-issues&lt;/a&gt;” por si alguien necesita mas info.&lt;/p&gt;  &lt;p&gt;En su momento fue porque instale una versión de &lt;a href="http://nuget.codeplex.com/" target="_blank"&gt;NuGet&lt;/a&gt; antes de instalar SP1, algo así fue no recuerdo bien…me volvió a pasar en una maquina virtual de hace un tiempo así que dejo como instalar “manualmente” (copiando y pegando archivos).&lt;/p&gt;  &lt;p&gt;Justo hoy quise actualizar una maquina virtual que la tenia para algunos proyectos, pero también sucedió con estas versiones (las anote por las dudas):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1.2.20325.9034 (un poco antigua) a la versión 1.6.21215.9133 &lt;/li&gt;    &lt;li&gt;1.5.20902.9026 a la versión 1.6.21215.9133 &lt;/li&gt;    &lt;li&gt;Y hace unos minutos de la versión 1.6.30117.9648 a la versión 1.7.30402.9028      &lt;br /&gt;(aquí con &lt;a href="http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c" target="_blank"&gt;solo descargar el instalador&lt;/a&gt; y ejecutarlo funcionó) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Si por las dudas tratas de instalar NuGet en un&amp;#160; Visual Studio 2010 SP1&lt;/h3&gt;  &lt;p&gt;Y en el log tienes el siguiente mensaje de error:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;VSIXInstaller.SignatureMismatchException: The signature on the update version of ‘NuGet Package Manager’ does not match the signature on the installed version. Therefore, Extension Manager cannot install the update.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Y la pantalla:   &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_23465074.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_6569B8F7.png" width="455" height="339" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Solución 1: Desinstalar y volver a instalar&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Desinstalar NuGet      &lt;ol&gt;       &lt;li&gt;Desde el VS2010. En Herramientas &amp;gt; Administrador de Extensiones          &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_439DE066.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_502B8D82.png" width="476" height="85" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;em&gt;(NOTA: Si no te aparece este botón para desinstalar habilitado debes iniciar VS como Administrador)            &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;        &lt;li&gt;O por el Panel de Control          &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_60C38870.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_306C8DED.png" width="476" height="153" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Volver a instalarlo… (con la opción que mas te guste)      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Solución 2: Instalar una actualización de NuGet “manualmente”&lt;/h3&gt;  &lt;p&gt;Como instalar el administrador de paquetes manualmente…&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Descarga la ultima versión de &lt;a href="http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c" target="_blank"&gt;NuGet&lt;/a&gt; desde &lt;a href="http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c" target="_blank"&gt;Visual Studio Gallery&lt;/a&gt;       &lt;br /&gt;&lt;em&gt;&lt;font size="2"&gt;(ejemplo la ultima versión al 24/04/2012 es la 1.7.30402.9028)&lt;/font&gt;         &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Descomprime el archivo (las extensiones de .vsix son archivos comprimidos)      &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_3A71094B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_1D87E476.png" width="440" height="30" /&gt;&lt;/a&gt;       &lt;br /&gt;Cambias la extensión por .zip y descomprimes…       &lt;br /&gt;Algo ya nos había mencionado El Bruno:      &lt;br /&gt;&amp;#160;&amp;#160; - &lt;a href="http://geeks.ms/blogs/elbruno/archive/2012/02/14/vs2010-howto-instalar-un-paquete-vsix-sin-utilizar-el-instalador.aspx" target="_blank"&gt;[#VS2010] HowTo: Instalar un paquete VSIX sin utilizar el instalador&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;En la carpeta de instalación del administrador de paquetes de NuGet en Archivos de Programas&amp;#160;&amp;#160; &lt;ol&gt;       &lt;li&gt;En 32bits:          &lt;br /&gt;&lt;em&gt;&lt;font size="2"&gt;&lt;font color="#666666"&gt;&lt;strong&gt;%ProgramFiles%&lt;/strong&gt;\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager&lt;/font&gt;&lt;/font&gt;&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;Si estas en 64bits la carpeta es Archivos de Programas (x86)          &lt;br /&gt;&lt;font size="2"&gt;&lt;em&gt;&lt;font color="#666666"&gt;&lt;strong&gt;%ProgramFiles(x86)%&lt;/strong&gt;\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager&lt;/font&gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Se debe crear la carpeta para la versión a instalar y copiar todos los archivos que se descomprimieron.&lt;em&gt;&lt;font size="2"&gt;          &lt;br /&gt;En este ejemplo que descargue la versión 1.7.30402.9028 aqui la carpeta           &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/NuGet_2D00_Carpeta_2D00_Instalacion_2D00_02_5F00_586F173F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="NuGet-Carpeta-Instalacion-02" border="0" alt="NuGet-Carpeta-Instalacion-02" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/NuGet_2D00_Carpeta_2D00_Instalacion_2D00_02_5F00_thumb_5F00_6518FBF6.png" width="644" height="368" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Y listo! ya esta disponible esta versión      &lt;br /&gt;Como sabemos cual esta utilizando VS2010?       &lt;br /&gt;Si vamos a Herramientas &amp;gt; Administrador de Extensiones podremos ver la versión de Administrador de Paquetes de NuGet       &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_3D9EDD34.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_7A92E8F9.png" width="733" height="179" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Enlaces&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;NuGet Package Manager Free        &lt;br /&gt;&lt;/strong&gt;Una colección de herramientas para automatizar el proceso de descarga, instalación, actualización, configuración y eliminación de paquetes de un proyecto de Visual Studio       &lt;br /&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c"&gt;http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NuGet Docs&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://docs.nuget.org/"&gt;http://docs.nuget.org/&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6e2b5a6b-3b6f-47bf-bf34-e550e33ad036" class="wlWriterEditableSmartContent"&gt;Delicious tags : &lt;a href="http://www.delicious.com/VS2010" rel="tag"&gt;VS2010&lt;/a&gt;, &lt;a href="http://www.delicious.com/Visual+Studio+2010" rel="tag"&gt;Visual Studio 2010&lt;/a&gt;, &lt;a href="http://www.delicious.com/NuGet" rel="tag"&gt;NuGet&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205157" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/fernandezja/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/fernandezja/archive/tags/NuGet/default.aspx">NuGet</category></item><item><title>[#KINECTSDK] Kinect SDK 1.5 and Developer Toolkit Released !!!</title><link>http://geeks.ms/blogs/elbruno/archive/2012/05/21/kinectsdk-kinect-sdk-1-5-and-developer-toolkit-released.aspx</link><pubDate>Mon, 21 May 2012 17:53:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205153</guid><dc:creator>El Bruno</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://brunocapuano.files.wordpress.com/2012/03/image5.png"&gt;&lt;img height="245" width="978" src="http://brunocapuano.files.wordpress.com/2012/03/image_thumb2.png?w=978&amp;amp;h=245&amp;amp;h=245" alt="image" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Buenas,&lt;/p&gt;
&lt;p&gt;pues una de las buenas noticias del d&amp;iacute;a:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;El SDK de Kinect 1.5 y el developer Toolkit han sido liberados.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En este caso la descarga se separa en estos dos componentes donde ya no es necesario instalar el SDK con todos los samples, sino que si somos developers, pues tendremos nuestro propio set de herramientas.&lt;/p&gt;
&lt;p&gt;Ahora que ya podemos comprar Kinect en varios pa&amp;iacute;ses (&lt;a target="_blank" href="http://elbruno.com/2012/04/12/kinect-howto-comprar-kinect-for-windows-en-espaa/"&gt;incluido Espa&amp;ntilde;a&lt;/a&gt;), nos encontramos con que a la lista se a&amp;ntilde;aden otros 15 pa&amp;iacute;ses. Pero en realidad lo que m&amp;aacute;s nos importa son las new features que se incluyen en esta versi&amp;oacute;n. Vamos con las m&amp;aacute;s importantes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kinect Studio. Una herramienta que te permite grabar y reproducir una secuencia de acciones frente al sensor. Fundamental para evitar tener que pararte y realizar una prueba unitaria humana cada vez que cambias algo en una aplicaci&amp;oacute;n. &lt;/li&gt;
&lt;li&gt;La Gu&amp;iacute;a de desarrollo de aplicaciones para aplicaciones con Kinect. Imprescindibles 70 p&amp;aacute;ginas con muchos detalles a tener en cuenta para desarrollos con Kinect. &lt;/li&gt;
&lt;li&gt;Face Tracking, capacidades de reconocimiento facial. Ojo, esto no es identificar rostros, sino identificar los puntos de un rostro. Con un poco de trabajo podremos reconocer sonrisas, sorpresas, sustos, etc. &lt;/li&gt;
&lt;li&gt;Detecci&amp;oacute;n de puntos de skeleton en personas sentadas. Esto es asombroso, la capacidad de detectar los joints superiores de un skeleton pero en personas sentadas, realmente abre otro abanico de posibilidades de aplicaciones. &lt;/li&gt;
&lt;li&gt;La c&amp;aacute;mara ahora soporta una resoluci&amp;oacute;n de 640 x 480 a 30FPS, con mejoras en ambientes con poca luz. &lt;/li&gt;
&lt;li&gt;Cool! Joint orientation !! no solo tenemos la posici&amp;oacute;n de un Joint, sino que adem&amp;aacute;s tenemos la capacidad de ver la &amp;ldquo;orientaci&amp;oacute;n&amp;rdquo; del mismo. &lt;/li&gt;
&lt;li&gt;Nuevos lenguajes para el reconocimiento de voz: Franc&amp;eacute;s, Espa&amp;ntilde;ol, Italiano y Japon&amp;eacute;s. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bueno ahora toca probar aquellas cosas a las que no ten&amp;iacute;amos acceso sin las betas del SDK y a postear detalles sobre el mismo &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/wlEmoticon_2D00_openmouthedsmile_5F00_647E3863.png" alt="Risa" style="border-top-style:none;border-bottom-style:none;border-right-style:none;border-left-style:none;" class="wlEmoticon wlEmoticon-openmouthedsmile" /&gt;&lt;/p&gt;
&lt;p&gt;Fuente: &lt;a href="http://blogs.msdn.com/b/kinectforwindows/archive/2012/05/21/kinect-for-windows-runtime-and-sdk-version-1-5-released.aspx" title="http://blogs.msdn.com/b/kinectforwindows/archive/2012/05/21/kinect-for-windows-runtime-and-sdk-version-1-5-released.aspx"&gt;http://blogs.msdn.com/b/kinectforwindows/archive/2012/05/21/kinect-for-windows-runtime-and-sdk-version-1-5-released.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Saludos @ Home&lt;/p&gt;
&lt;p&gt;El Bruno&lt;/p&gt;
&lt;table border="0" width="110" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="36" valign="top"&gt;&lt;a target="_blank" href="http://facebook.com/elbruno"&gt;&lt;img height="41" width="41" src="http://brunocapuano.files.wordpress.com/2012/03/image2.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="36" valign="top"&gt;&lt;a target="_blank" href="http://es.linkedin.com/in/elbruno"&gt;&lt;img height="41" width="41" src="http://brunocapuano.files.wordpress.com/2012/03/image3.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="36" valign="top"&gt;&lt;a target="_blank" href="https://twitter.com/elbruno"&gt;&lt;img height="40" width="40" src="http://brunocapuano.files.wordpress.com/2012/03/image4.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205153" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Kinect/default.aspx">Kinect</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/KinectSdk/default.aspx">KinectSdk</category></item><item><title>[Evento] SUG.CAT - SharePoint 2010 desde todo tipo de dispositivos</title><link>http://geeks.ms/blogs/lruiz/archive/2012/05/21/evento-sug-cat-sharepoint-2010-desde-todo-tipo-de-dispositivos.aspx</link><pubDate>Mon, 21 May 2012 11:44:40 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205148</guid><dc:creator>Luis Ruiz Pavón</dc:creator><slash:comments>0</slash:comments><description>Este miércoles 23 de mayo, estaré con el Grupo de Usuarios de SharePoint de Cataluña dando una pequeña charla sobre servicios REST con WCF en SharePoint 2010, donde podremos ver como hacer más extensible la plataforma y así, poder consumirla desde todo tipo de dispositivos. Tendré el placer de compartir cartel con dos mega-cracks de SharePoint, Edin Kapic (Pasiona) que nos deleitará con el &amp;quot;Desarrollo de aplicaciones de Windows 8 conectadas a SharePoint &amp;quot; y David Martos (Spenta/Beezy) nos...(&lt;a href="http://geeks.ms/blogs/lruiz/archive/2012/05/21/evento-sug-cat-sharepoint-2010-desde-todo-tipo-de-dispositivos.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205148" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lruiz/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/lruiz/archive/tags/Eventos/default.aspx">Eventos</category></item><item><title>SharePoint 2010 &amp; SharePoint Online: Como automatizar el despliegue de una aplicación de Access Services (II)!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/21/sharepoint-2010-amp-sharepoint-online-como-automatizar-el-despliegue-de-una-aplicaci-243-n-de-access-services-ii.aspx</link><pubDate>Mon, 21 May 2012 06:34:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205142</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>1</slash:comments><description>&lt;p align="justify"&gt;Siguiendo con la serie de posts sobre &lt;a href="http://geeks.ms/blogs/ciin/archive/2012/05/18/sharepoint-2010-amp-sharepoint-online-como-automatizar-el-despliegue-de-una-aplicaci-243-n-de-access-services-i.aspx"&gt;como automatizar el despliegue de una aplicaci&amp;oacute;n Access Services en SharePoint OnPremise u Online (SPO),&lt;/a&gt; en esta ocasi&amp;oacute;n vamos a empatar el resultado del partido y casi a ganarlo ya que una vez que os muestre el camino alternativo de publicaci&amp;oacute;n, es muy f&amp;aacute;cil pensar en como mediante el modelo de objetos automatizar al m&amp;aacute;ximo el despliegue de una aplicaci&amp;oacute;n de Access Services. Empecemos pues.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Lo primero que tenemos que hacer es crear una aplicaci&amp;oacute;n Access 2010 Web o bien partir de una existente.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;En mi caso, he creado una nueva aplicaci&amp;oacute;n usando como base la plantilla Charitable Contributions.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Una vez que hemos realizado todas las personalizaciones e implementaciones de nuestra aplicaci&amp;oacute;n Access Web, empieza la &amp;ldquo;fiesta&amp;rdquo; para la publicaci&amp;oacute;n alternativa de la misma en los servicios de Access. Lo que tenemos que hacer es guardar la aplicaci&amp;oacute;n como plantilla de tipo &amp;ldquo;Database template&amp;rdquo; (ACCDT) a trav&amp;eacute;s de la opci&amp;oacute;n &amp;ldquo;Save &amp;amp; Publish&amp;rdquo;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image.png"&gt;&lt;img height="125" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_3.png"&gt;&lt;img height="124" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_3.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_4.png"&gt;&lt;img height="104" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_4.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;De esta forma se abre una ventana en la que especificaremos los datos de la plantilla ACCDT a generar.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Una vez especificados estos datos, pulsamos &amp;ldquo;OK&amp;rdquo; y nos quedamos con la ruta d&amp;oacute;nde se guarda la plantilla.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Nos vamos a un sitio de SharePoint OnPremise o SPO y cargamos la plantilla en la galer&amp;iacute;a de soluciones. Activamos la plantilla.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_5.png"&gt;&lt;img height="244" width="175" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_5.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_6.png"&gt;&lt;img height="45" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_6.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_7.png"&gt;&lt;img height="97" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_7.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Una vez activada, nos vamos a Acciones del sitio &amp;ndash;&amp;gt; Crear y buscamos nuestra plantilla (cuidado con el idioma). Configuramos los par&amp;aacute;metros de creaci&amp;oacute;n del nuevo sitio y pulsamos &amp;ldquo;Crear&amp;rdquo;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;En mi caso, la prueba la he hecho en SPO y el proceso a finalizado con un error no especificado, pero creando el nuevo sitio por lo que deduzco que se ha debido dar alg&amp;uacute;n Time Out en el proceso de creaci&amp;oacute;n&amp;hellip;pero el resultado es qu&amp;eacute; la aplicaci&amp;oacute;n se crea, por lo que JC empata el partido.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Por supuesto, la aplicaci&amp;oacute;n est&amp;aacute; completamente operativa.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_8.png"&gt;&lt;img height="154" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_8.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_9.png"&gt;&lt;img height="113" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_9.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_10.png"&gt;&lt;img height="122" width="244" src="http://www.ciin.es/imagenes/SharePoint-2010--SharePoint-Online-Como-_8BD0/image_thumb_10.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Referencia:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.slideshare.net/patenik2/access-services-in-sharepoint-2010-all-you-need-to-know" title="http://www.slideshare.net/patenik2/access-services-in-sharepoint-2010-all-you-need-to-know"&gt;http://www.slideshare.net/patenik2/access-services-in-sharepoint-2010-all-you-need-to-know&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205142" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Online/default.aspx">SharePoint Online</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Office+365/default.aspx">Office 365</category></item><item><title>Dynamics XRM Tools 1.0 BETA</title><link>http://geeks.ms/blogs/rtebar/archive/2012/05/20/dynamics-xrm-tools-1-0-beta.aspx</link><pubDate>Sun, 20 May 2012 19:54:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205139</guid><dc:creator>Ramón Tébar</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="https://bingsoft.files.wordpress.com/2012/05/logo.png"&gt;&lt;img title="DX Tools" alt="" src="https://bingsoft.files.wordpress.com/2012/05/logo.png?w=256&amp;amp;h=128" width="256" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a href="http://dynamicsxrmtools.codeplex.com/"&gt;&lt;font style="font-weight:normal;"&gt;Dynamics XRM Tools &lt;/font&gt;&lt;/a&gt;&lt;font style="font-weight:normal;"&gt;nos trae un conjunto de interesantes aplicaciones para mejorar nuestra experiencia como usuarios y desarrolladores de Microsoft Dynamics CRM 2011. &lt;/font&gt;&lt;/h5&gt;  &lt;p&gt;La herramienta está basada en una aplicación Silverlight la cual gestiona y ofrece la diferentes utilidades disponibles. En pocas palabras, “&lt;a href="http://dynamicsxrmtools.codeplex.com/"&gt;Dynamics XRM Tools &lt;/a&gt;es una herramienta de herramientas para CRM”. &lt;/p&gt;  &lt;p&gt;Para comenzar a utilizarla, sólo teneis que instalar la solución manejada en vuestra organización Online o On-Premise. Podeis descargarla desde Codeplex; no olvideis dejarnos vuestro feedback, así podemos seguir mejorando esta versión Beta &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rtebar/wlEmoticon_2D00_smile_5F00_6F9800EE.png" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://dynamicsxrmtools.codeplex.com/"&gt;http://dynamicsxrmtools.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;Herramientas actualmente disponsibles:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;OData Query Designer &lt;/li&gt;    &lt;li&gt;Metadata Browser &lt;/li&gt;    &lt;li&gt;CRM 4 to CRM 2011 JavaScript Converter &lt;/li&gt;    &lt;li&gt;Trace Tool (Solo para on premise) &lt;/li&gt;    &lt;li&gt;Statistics &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://dynamicsxrmtools.codeplex.com/"&gt;&lt;img title="Dynamics XRM Tools" alt="Dynamics XRM Tools" src="https://bingsoft.files.wordpress.com/2012/05/dxtoolsmain.png?w=630&amp;amp;h=504" width="423" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;&lt;font style="font-weight:bold;"&gt;Un poco más sobre Dynamics XRM Tools&lt;/font&gt;&lt;/h5&gt;  &lt;p&gt;La herramienta &lt;a href="http://dynamicsxrmtools.codeplex.com/" target="_blank"&gt;Dynamics XRM Tools&lt;/a&gt; está basado en una arquitectura modular desarrollada con Silverlight y &lt;a href="http://compositewpf.codeplex.com/" target="_blank"&gt;PRISM&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;En un esfuerzo conjunto comenzado por el &lt;a href="http://bingsoft.wordpress.com" target="_blank"&gt;MVP Rhett Clinton&lt;/a&gt; y un servidor, hemos desarrollado esta flexible aplicación capaz de ofrecer y hostear numerosas herramientas de CRM siguiendo unos standards y prácticas comunes a todas ellas.&lt;/p&gt;  &lt;p&gt;Las originales herramientas de &lt;a href="http://bingsoft.wordpress.com" target="_blank"&gt;Rhett Clinton&lt;/a&gt; han sido adaptadas a este nuevo framework, incluyendo al mismo tiempo nuevas mejoras.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205139" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rtebar/archive/tags/CRM/default.aspx">CRM</category><category domain="http://geeks.ms/blogs/rtebar/archive/tags/CRM+2011/default.aspx">CRM 2011</category><category domain="http://geeks.ms/blogs/rtebar/archive/tags/XRM+Tools/default.aspx">XRM Tools</category></item><item><title>[#VS11] Puedo trabajar en un mismo proyecto con Visual Studio 2010 y Visual Studio 11?</title><link>http://geeks.ms/blogs/elbruno/archive/2012/05/20/vs11-puedo-trabajar-en-un-mismo-proyecto-con-visual-studio-2010-y-visual-studio-11.aspx</link><pubDate>Sun, 20 May 2012 18:13:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205137</guid><dc:creator>El Bruno</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;a href="http://brunocapuano.files.wordpress.com/2012/02/image18.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/02/image_thumb17.png" width="464" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Buenas,&lt;/p&gt;  &lt;p&gt;en primer lugar vamos con la respuesta a la pregunta:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;SI. Es posible trabajar en un mismo proyecto con Visual Studio 2010 y &lt;/em&gt;&lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;Visual Studio 11&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ahora un poco más de detalles basados en la experiencia de este último medio año. Con la llegada de &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt;, de nuevo vemos en el manual que hay “project compatibility” entre proyectos de Visual Studio 2010 y &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt;. A esta historia la conocemos de VS2005, VS2008 y VS2010; y sabemos que no es tan simple. &lt;/p&gt;  &lt;p&gt;Cuando se migraba un proyecto a VS2010 se actualizaba el archivo de proyecto (.csproj) y si trabajabas con informes de Crystal Reports, o proyectos de setup, pues por lo general tenías uno o más problemas para que puedan convivir fácilmente VS2005 y VS2010.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; toma un enfoque diferente y promete no cambiar los archivos de proyecto. Pero teniendo en cuenta varios cambios que tenemos en &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt;, más vale que veamos que escenarios soporta.&lt;/p&gt;  &lt;p&gt;Por ejemplo, he creado una solución con 17 proyectos representativos de lo que encontramos casi “out of the box” en Visual Studio 2010. Desde proyectos de ASP.Net MVC 2 hasta extensiones de Office. He incluido, solo a modo de ejemplo un proyecto para Windows Phone, aunque sé que &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; no lo abrirá.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_026CF4A2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_7CDBA7B2.png" width="321" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahora bien, cuando abrimos esta solución con &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt;, lo primero que vemos es que &lt;strong&gt;&lt;em&gt;el tipo de proyecto de Visual Studio Installer está deprecado&lt;/em&gt;&lt;/strong&gt;. Esto no es novedad, ya que &lt;a href="http://elbruno.com/2011/04/12/vs20-no-ms-proyectos-de-setup-a-partir-del-proximo-visual-studio/" target="_blank"&gt;lo sabíamos desde hace un tiempo&lt;/a&gt;, pero a tenerlo en cuenta.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_793F5BDF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_30D1CA76.png" width="700" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Otro error, pero esta de vez de configuración:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_24F9A6F9.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_4EB9CF94.png" width="483" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hay que tocar un poco las tripas de &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; para que funcione con una versión anterior de SQL Express.&lt;/p&gt;  &lt;p&gt;Pero después de un segundo de migración ya tenemos listo el proyecto en &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_0093B536.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_088FB753.png" width="943" height="378" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahora bien, si estabas trabajando con proyectos de ASP.Net MVC 2.0, no te quedará otra más que actualizarte a la ultima versión. &lt;strong&gt;&lt;em&gt;Los proyectos de ASP.Net MVC 2.0 no se soportar y te sugieren amablemente que los actualices a la versión ASP.Net MVC 3&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;h5&gt;&lt;strong&gt;AspNetMvc2WebApplication1_Net4\AspNetMvc2WebApplication1_Net4.csproj: &lt;/strong&gt;The project file &amp;#39;E:\srcElBruno\Tests\ProjectCompatibility\TestForVs11\AspNetMvc2WebApplication1_Net4\AspNetMvc2WebApplication1_Net4.csproj&amp;#39; cannot be opened. There is a missing project subtype. Subtype: &amp;#39;{F85E285D-A4E0-4152-9332-AB1D724D3325}&amp;#39; is unsupported by this installation. &lt;a href="http://go.microsoft.com/fwlink/?prd=12395&amp;amp;pver=11&amp;amp;sbp=ProjectTypeDeprecated&amp;amp;plcid=0x409&amp;amp;clcid=0x409&amp;amp;ar=MSDN&amp;amp;sar=ProjectCompatibility&amp;amp;o1={F85E285D-A4E0-4152-9332-AB1D724D3325"&gt;http://go.microsoft.com/fwlink/?prd=12395&amp;amp;pver=11&amp;amp;sbp=ProjectTypeDeprecated&amp;amp;plcid=0x409&amp;amp;clcid=0x409&amp;amp;ar=MSDN&amp;amp;sar=ProjectCompatibility&amp;amp;o1={F85E285D-A4E0-4152-9332-AB1D724D3325&lt;/a&gt;} &lt;/h5&gt;  &lt;p&gt;Obviamente, &lt;strong&gt;&lt;em&gt;los proyectos de Windows Phone no están soportados todavía en &lt;/em&gt;&lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;Visual Studio 11&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PhoneApp1_Net4\PhoneApp1_Net4.csproj: &lt;/strong&gt;The project file &amp;#39;E:\srcElBruno\Tests\ProjectCompatibility\TestForVs11\PhoneApp1_Net4\PhoneApp1_Net4.csproj&amp;#39; cannot be opened. There is a missing project subtype. Subtype: &amp;#39;{C089C8C0-30E0-4E22-80C0-CE093F111A43}&amp;#39; is unsupported by this installation. &lt;a href="http://go.microsoft.com/fwlink/?prd=12395&amp;amp;pver=11&amp;amp;sbp=ProjectTypeDeprecated&amp;amp;plcid=0x409&amp;amp;clcid=0x409&amp;amp;ar=MSDN&amp;amp;sar=ProjectCompatibility&amp;amp;o1={C089C8C0-30E0-4E22-80C0-CE093F111A43"&gt;http://go.microsoft.com/fwlink/?prd=12395&amp;amp;pver=11&amp;amp;sbp=ProjectTypeDeprecated&amp;amp;plcid=0x409&amp;amp;clcid=0x409&amp;amp;ar=MSDN&amp;amp;sar=ProjectCompatibility&amp;amp;o1={C089C8C0-30E0-4E22-80C0-CE093F111A43&lt;/a&gt;} &lt;/p&gt;  &lt;p&gt;Ahora bien, el panel del Solution Explorer nos deja muy en claro, qué tipos de proyectos están soportados, cuales no se pudieron cargar y cuales son incompatibles. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_6EEC3E46.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_222CD76B.png" width="412" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si intentamos compilar los proyectos, veremos que los mismos compilan correctamente. Pero ahora viene la prueba de fuego: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;¿podrá Visual Studio 2010 abrir la nueva solución y compilar los proyectos modificados?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Y la respuesta es …. NO !!! Lo primero que vemos es el asistente para conversiones y curiosamente apunta al proyecto de ASP.Net MVC 2.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_465BB317.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/elbruno/image_5F00_thumb_5F00_24BC37EE.png" width="668" height="516" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La pregunta en este momento, estimado lector, es ¿cómo demonios se modifica este archivo si el crack de &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; me ha dicho que no lo puede cargar?. Pues si, lo modifica y mucho al archivo csproj, y es por esto que en este punto Visual Studio 2010 entiende que tiene que actualizarlo.&lt;/p&gt;  &lt;p&gt;Así que si lo actualizas con VS2010, pues ya no hay más problemas, salvo que quieras trabajar en modo mixto en tu equipo con VS2010 y VS11.&lt;/p&gt;  &lt;p&gt;Así que los puntos finales a tener en cuenta son los siguientes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Hasta el día de hoy &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; no se puede utilizar para desarrollar para Windows Phone. &lt;/li&gt;    &lt;li&gt;Con desarrollos para AZURE, &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; todavía no soporta un upgrade limpio desde VS2010, pero ese es motivo de un post completo &lt;/li&gt;    &lt;li&gt;No hay soporte para proyectos de Visual Studio Installer en VS11 &lt;/li&gt;    &lt;li&gt;Cuidado con los proyectos de ASP.Net MVC 2.0 si piensas trabajar con &lt;a href="http://msdn.microsoft.com/es-es/vstudio/aa718325" target="_blank"&gt;Visual Studio 11&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Lo bueno de todo este jardín, es que luego realmente el trabajo es “side by side” entre ambos Visual Studios sin complicaciones, algo que antes entre VS2005 y VS2010 por ejemplo no era tan fácil.&lt;/p&gt;  &lt;p&gt;Saludos @ Home&lt;/p&gt;    &lt;p&gt;El Bruno&lt;/p&gt;  &lt;table cellspacing="0" width="110" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="36"&gt;&lt;a href="http://facebook.com/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image2.png" width="41" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="36"&gt;&lt;a href="http://es.linkedin.com/in/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image3.png" width="41" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="36"&gt;&lt;a href="https://twitter.com/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image4.png" width="40" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205137" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category></item><item><title>SharePoint Online: Cómo registrar un manejador de eventos contra una lista personalizada (II)!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/20/sharepoint-online-c-243-mo-registrar-un-manejador-de-eventos-contra-una-lista-personalizada-ii.aspx</link><pubDate>Sun, 20 May 2012 16:21:04 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205135</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Siguiendo con la serie de posts sobre como registrar un manejador de eventos contra una lista personalizada de SharePoint Online (SPO), en esta ocasión toca ver la aproximación programática a través del modelo de objetos de SharePoint:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Una vez creado el manejador en VS 11 Beta, tenemos que averiguar la información del ensamblado correspondiente ya que la necesitaremos para registrar el manejador a la lista mediante el modelo de objetos. Para obtener esta información, simplemente usamos la utilidad Strong Name de VS 11 Beta que nos la vuelca en la ventana de salida.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;A continuación, para registrar el manejador de eventos en la lista mediante el modelo de objetos tenemos que recurrir a un Feature Event Receiver…y es aquí dónde nos esperan las malas noticias: no es posible registrar el manejador de eventos mediante el modelo de objetos cuando se trata de una solución de tipo Sandbox…básicamente el método Add() que necesitamos para añadir el manejador a la colección de manejadores de la lista en cuestión no está disponible.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="677" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="374"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-Online-Cmo-registrar-un-manej_F0DF/image.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-Online-Cmo-registrar-un-manej_F0DF/image_thumb.png" width="244" height="141" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="301"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint-Online-Cmo-registrar-un-manej_F0DF/image_3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.ciin.es/imagenes/SharePoint-Online-Cmo-registrar-un-manej_F0DF/image_thumb_3.png" width="244" height="153" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Referencias:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ff407249.aspx" href="http://msdn.microsoft.com/en-us/library/ff407249.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff407249.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.speventreceiverdefinition.aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.speventreceiverdefinition.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.speventreceiverdefinition.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205135" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Online/default.aspx">SharePoint Online</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Office+365/default.aspx">Office 365</category></item><item><title>WebCast: Estaré hablando sobre SharePoint Foundation para la comunidad IT Pro!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/19/webcast-estar-233-hablando-sobre-sharepoint-foundation-para-la-comunidad-it-pro.aspx</link><pubDate>Sat, 19 May 2012 18:10:22 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205134</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Pues eso, el próximo 21 de junio y gracias a la invitación de la &lt;a href="http://blogs.itpro.es/"&gt;comunidad IT Pro de España&lt;/a&gt; estaré hablando sobre SharePoint Foundation a nivel de posibilidades y de arquitectura de la plataforma. Los detalles completos del WebCast los podéis encontrar &lt;a href="http://blogs.itpro.es/eventos/2012/05/18/webcast-sharepoint-foundation-2010-la-piedra-angular-para-la-colaboracin-comunicacin-y-gestin-de-una-organizacin/"&gt;en este enlace&lt;/a&gt;. Podéis inscribiros al WebCast a través de &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514076&amp;amp;Culture=es-ES"&gt;este otro enlace&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/0023b245ffab_BF19/20120621-Banner-Sharepoint-Fundation.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="20120621 Banner Sharepoint Fundation" border="0" alt="20120621 Banner Sharepoint Fundation" src="http://www.ciin.es/imagenes/0023b245ffab_BF19/20120621-Banner-Sharepoint-Fundation_thumb.png" width="642" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205134" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/Eventos/default.aspx">Eventos</category></item><item><title>[#VS11] Excelente set de bibliotecas para desarrollos sobre WinRT (es decir para #Windows8)</title><link>http://geeks.ms/blogs/elbruno/archive/2012/05/19/vs11-excelente-set-de-bibliotecas-para-desarrollos-sobre-winrt-es-decir-para-windows8.aspx</link><pubDate>Sat, 19 May 2012 17:55:37 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205131</guid><dc:creator>El Bruno</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;a href="http://brunocapuano.files.wordpress.com/2012/02/image18.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 0px 3px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/02/image_thumb17.png" width="464" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Buenas,&lt;/p&gt;  &lt;p&gt;estas semanas nos hemos estado pegando con el desarrollo de una aplicación para Windows 8. Como yo andaba flojo de estado físico; me he entrenado como &lt;a href="http://www.youtube.com/watch?v=b6w4XtsfyVo" target="_blank"&gt;Rocky en Siberia&lt;/a&gt; con 30 minutos de CodeKatas por día, los videos del Build (que a decir verdad no me han servido mucho) y otras técnicas de mi entrenados personal que no me permite difundir.&lt;/p&gt;  &lt;p&gt;Pero como la base de todos los desarrollos sigue siendo&lt;/p&gt;  &lt;p&gt;- 20% código&lt;/p&gt;  &lt;p&gt;- 80% comprender la plataforma sobre la que trabajas&lt;/p&gt;  &lt;p&gt;me he encontrado con este excelente recurso que me ha dado horas y horas de lectura de código:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://winrtxamltoolkit.codeplex.com/" target="_blank"&gt;WinRT XAML Toolkit&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Mi proceso de aprendizaje era similar al siguiente:&lt;/p&gt;  &lt;p&gt;1, elegir una problemática a solucionar (para la app que creamos hay bastantes en el backlog)&lt;/p&gt;  &lt;p&gt;2. ver la forma de solucionarlo sobre WinRT&lt;/p&gt;  &lt;p&gt;3. investigar como funcionan los componentes de WinRT que están por debajo para la solución que hemos implementado&lt;/p&gt;  &lt;p&gt;4. un poco de TDD&lt;/p&gt;  &lt;p&gt;5. volver al paso 1&lt;/p&gt;  &lt;p&gt;6. refactorizar el código y el proceso de trabajo&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Es por eso que este conjunto de clases, controles, etc. me ha venido muy bien, ya que cumplen con reglas básicas como clases con nombres coherentes, código limpio (bueno casi todo, etc.), en algunas partes se utiliza var (lo siento &lt;a href="http://twitpic.com/@J0rgeSerran0" target="_blank"&gt;@J0rgeSerran0&lt;/a&gt; &lt;a href="http://twitpic.com/@_PedroHurtado" target="_blank"&gt;@_PedroHurtado&lt;/a&gt; &lt;a href="http://twitpic.com/@eiximenis" target="_blank"&gt;@eiximenis&lt;/a&gt;, menuda &lt;a href="http://geeks.ms/blogs/phurtado/archive/2012/05/17/var-ii-los-hermanos-de-simba.aspx" target="_blank"&gt;han montado&lt;/a&gt; ehh??), etc.&lt;/p&gt;  &lt;p&gt;Si estas por empezar con Windows 8 y METRO, pues te recomiendo que revises algunas de las implementaciones que han hecho, ya que realmente están muy bien.&lt;/p&gt;  &lt;p&gt;Proyecto: &lt;a href="http://winrtxamltoolkit.codeplex.com/"&gt;http://winrtxamltoolkit.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Source: &lt;a title="http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/changes/13755" href="http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/changes/13755"&gt;http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/changes/13755&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Saludos @ Home&lt;/p&gt;  &lt;p&gt;El Bruno&lt;/p&gt;  &lt;table cellspacing="0" width="110" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="36"&gt;&lt;a href="http://facebook.com/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image2.png" width="41" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="36"&gt;&lt;a href="http://es.linkedin.com/in/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image3.png" width="41" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="36"&gt;&lt;a href="https://twitter.com/elbruno" target="_blank"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://brunocapuano.files.wordpress.com/2012/03/image4.png" width="40" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205131" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>Controlando la calidad del CSS con CSSCop for Visual Studio!</title><link>http://geeks.ms/blogs/jersson/archive/2012/05/19/controlando-la-calidad-del-css-con-csscop-for-visual-studio.aspx</link><pubDate>Sat, 19 May 2012 04:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205129</guid><dc:creator>Jersson</dc:creator><slash:comments>1</slash:comments><description>Definitivamente el título les debe sonar muy familiar si leyeron el post anterior ! Asi es, hay forma de verificar la calidad del CSS que vayamos construyendo! Para resumir el asunto el año pasado se definió un conjunto de reglas para determinar la calidad de los CSS, todo esto basado en performance, mantenibilidad, compatibilidad y otros aspectos muy interesantes. Este pack fue denominado CSS Lint y tenemos además una herramienta en línea que nos ayudará a herir nuestros sentimientos :D (asi dice...(&lt;a href="http://geeks.ms/blogs/jersson/archive/2012/05/19/controlando-la-calidad-del-css-con-csscop-for-visual-studio.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205129" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jersson/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/jersson/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://geeks.ms/blogs/jersson/archive/tags/Code+Analysis/default.aspx">Code Analysis</category><category domain="http://geeks.ms/blogs/jersson/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>SharePoint Online: Cómo registrar un manejador de eventos contra una lista personalizada (I)!</title><link>http://geeks.ms/blogs/ciin/archive/2012/05/18/sharepoint-online-c-243-mo-registrar-un-manejador-de-eventos-contra-una-lista-personalizada-i.aspx</link><pubDate>Fri, 18 May 2012 18:43:53 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205123</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>1</slash:comments><description>&lt;p align="justify"&gt;A raíz de una cuestión relativa a manejadores de eventos en SharePoint Online (SPO), me he encontrado con la sorpresa de qué cuando creas un manejador para una lista de tipo personalizada este no se registra por defecto y por lo tanto no funciona. El manejador en sí se despliega de forma correcta a través de la correspondiente solución Sandbox, pero a la hora de verlo en acción nada de nada…ante este comportamiento, cabían dos posibles respuestas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;En primer lugar, no es posible registrar de forma declarativa un manejador de eventos para una lista personalizada de SPO…lo cuál me extrañaba.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;En segundo lugar, este registro igual sólo se puede hacer de forma programática con un manejador de característica por ejemplo.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Ante estas dudas, tocaba hacer las correspondientes pruebas…la primera ver si el registro declarativo nos deja alguna opción para agregar un manejador a una lista personalizada y la respuesta es qué sí…el truco pasa por usar el atributo ListUrl en lugar del ListTemplateId de forma que nos aseguremos que el manejador se registra y además lo hace para una lista concreta…y efectivamente, así es:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#800000;"&gt;xml&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Elements&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Receivers&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ListUrl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Lists/SPCustomList&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Receiver&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;CustomListERItemAdding&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;ItemAdding&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Assembly&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$SharePoint.Project.AssemblyFullName$&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Assembly&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;SPOERPOC.CustomListER.CustomListER&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SequenceNumber&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;10000&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SequenceNumber&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Receiver&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Receivers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Elements&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;La segunda aproximación, pero ya en otro post, pasa por realizar el registro de forma programática en la lista en cuestión. Finalmente, os dejo otros posts relacionados con este tema:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/06/20/sharepoint-2010-como-registrar-un-manejador-de-eventos.aspx"&gt;SharePoint 2010: Como registrar un manejador de eventos!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/03/11/sharepoint-2010-c-243-mo-registrar-un-manejador-de-eventos-en-una-250-nica-lista-ii.aspx"&gt;SharePoint 2010: Cómo registrar un manejador de eventos en una única lista (II)!&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2011/03/10/sharepoint-2010-c-243-mo-registrar-un-manejador-de-eventos-en-una-250-nica-lista-i.aspx"&gt;SharePoint 2010: Cómo registrar un manejador de eventos en una única lista (I)!&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205123" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Online/default.aspx">SharePoint Online</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Office+365/default.aspx">Office 365</category></item><item><title>Instalar Chrome en Linux Mint 12</title><link>http://geeks.ms/blogs/jalarcon/archive/2012/05/18/instalar-chrome-en-linux-mint-12.aspx</link><pubDate>Fri, 18 May 2012 18:05:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205090</guid><dc:creator>José M. Alarcón Aguín</dc:creator><slash:comments>0</slash:comments><description>Post original en JASoft.org: http://www.jasoft.org/Blog/post/Instalar-Chrome-en-Linux-Mint-12.aspx Desde que Ubuntu empezó a hacer el tonto con la interfaz Unity y desde que la actualización a su última versión me ha dejado sin ratón ni forma (aparentemente) de hacer que vuelva a funcionar, estoy usando Linux Mint 12 para juguetear con Linux (y sobre todo con Mono ). La verdad es que tenía que haberme cambiado hace ya tres versiones, desde que Ubuntu estrenó la apestosa interfaz Unity. Mint va de...(&lt;a href="http://geeks.ms/blogs/jalarcon/archive/2012/05/18/instalar-chrome-en-linux-mint-12.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205090" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jalarcon/archive/tags/Sistemas+Operativos/default.aspx">Sistemas Operativos</category></item><item><title>C++/CX (IV). Clases parciales</title><link>http://geeks.ms/blogs/rfog/archive/2012/05/18/c-cx-iv-clases-parciales.aspx</link><pubDate>Fri, 18 May 2012 15:10:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205119</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>2</slash:comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;&amp;Eacute;ramos pocos y pari&amp;oacute; la abuela. &amp;iquest;Sab&amp;eacute;is por qu&amp;eacute; C++/CLI (el C++ de .NET) se qued&amp;oacute; en la cuneta en eso de ser &lt;em&gt;a first class .NET language&lt;/em&gt; (o en cristiano: un lenguaje .NET de primera clase)? Efectivamente, la ausencia de clases parciales.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Cuando Microsoft introdujo el .NET 3.0 tambi&amp;eacute;n cambi&amp;oacute; la forma de entender la interacci&amp;oacute;n con la parte visual. Si bien antes las ventanas se constru&amp;iacute;an con c&amp;oacute;digo, aunque de forma m&amp;aacute;s o menos automatizada gracias al dise&amp;ntilde;ador visual (hablamos de Windows Forms), a partir de ese momento se implement&amp;oacute; una nueva forma que, pese a ser una idea cojonuda, peca un poco de mal implementada, como casi todo lo que hace la casa.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Los viejos lobos de mar nos hemos defendido con &lt;em&gt;las plantillas de cuadro de di&amp;aacute;logo&lt;/em&gt;, que defin&amp;iacute;an los tales mediante una serie de palabras claves. Luego Windows se encargaba de leer la versi&amp;oacute;n binaria de ese texto y nos constru&amp;iacute;a nuestro cuadro de di&amp;aacute;logo.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Pues bien, XAML es la en&amp;eacute;sima reencarnaci&amp;oacute;n de lo mismo, pero con esteroides. Y digo en&amp;eacute;sima porque por ejemplo Delphi, C++ Builder e incluso el ya vetusto VB6 lo hac&amp;iacute;an m&amp;aacute;s o menos as&amp;iacute;.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;XAML es un &lt;em&gt;lenguaje&lt;/em&gt; (lo que me cuesta llamarlo as&amp;iacute;) XML que define la estructura de una ventana y todos sus componentes. La idea es tener algo que nos defina por completo, y de forma independiente del c&amp;oacute;digo, la parte visual de un programa y que encima se pueda crear tanto de forma manual como con programas&amp;hellip; Eso s&amp;iacute;, l&amp;eacute;ete tu un fichero XAML escrito con Blend, que lo vas a flipar en colores.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Bueno, a lo que vamos, XAML tiene que poder interactuar de alguna forma con el c&amp;oacute;digo. Para evitarnos cosas como MFC, Microsoft permiti&amp;oacute; que se pudiera definir una misma clase en m&amp;aacute;s de un fichero. Y nacieron las clase parciales.&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;La idea es bien sencilla. XAML conoce una parte de la clase que define la ventana, y el programador conoce otra. Luego el compilador las une y hemos conseguido nuestro objetivo.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Pues bien, C++/CX implementa clases parciales de forma casi id&amp;eacute;ntica a C#. Es la &amp;uacute;nica forma de que C++ pueda entenderse con XAML sin hacer virguer&amp;iacute;as todav&amp;iacute;a peores.&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;En resumen:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;No est&amp;aacute; definido en el est&amp;aacute;ndar de C++11.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;S&amp;oacute;lo funciona para &lt;em&gt;ref class&lt;/em&gt;. O en otras palabras: no vale para c&amp;oacute;digo C++ cl&amp;aacute;sico ni para la parte cl&amp;aacute;sica de una aplicaci&amp;oacute;n Metro escrita en C++/CX.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Se a&amp;ntilde;ade una nueva palabra reservada, &lt;em&gt;partial&lt;/em&gt;, que debe ir en todas las declaraciones menos en una.&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Tom&amp;aacute;ndolo del &lt;a href="http://mariusbancila.ro/blog/2011/10/13/cpp-winrt-and-partial-classes/"&gt;art&amp;iacute;culo en ingl&amp;eacute;s &lt;/a&gt;en el que me baso, os pego un ejemplo:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;// foo.private.h&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;#pragma once&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;min-height:13.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;partial ref class foo // &amp;lt;- here the partial keyword is used&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;{&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;private:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;&amp;nbsp;&amp;nbsp; int _id;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;&amp;nbsp;&amp;nbsp; Platform::String^ _name;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;};&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;// foo.public.h&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;#pragma once&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;#include &amp;quot;foo.private.h&amp;quot;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;min-height:13.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;ref class foo // &amp;lt;- partial keyword is not used here&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;{&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;public:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;&amp;nbsp;&amp;nbsp; int GetId();&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;&amp;nbsp;&amp;nbsp; Platform::String^ GetName();&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;};&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;// foo.cpp&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;#include &amp;quot;pch.h&amp;quot;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;#include &amp;quot;foo.public.h&amp;quot;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;min-height:13.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;int foo::GetId() {return _id;}&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;Platform::String^ foo::GetName {return _name;}&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Es decir, cuando declaremos una clase en varios ficheros, todos ellos deben llevar la palabra reservada &lt;em&gt;partial&lt;/em&gt; excepto uno de ellos, que har&amp;aacute; de &lt;em&gt;concentrador&lt;/em&gt;. Supongo que esto facilita la tarea del compilador, que ir&amp;aacute; anotando las partes parciales y las ir&amp;aacute; a&amp;ntilde;adiendo poco a poco a la otra de forma din&amp;aacute;mica y conforme se vaya encontrando el c&amp;oacute;digo. Y finalmente, en uno o m&amp;aacute;s CPP definimos los m&amp;eacute;todos y dem&amp;aacute;s. Aqu&amp;iacute; ya no hace falta para nada la palabra &lt;em&gt;partial&lt;/em&gt; porque eso ya lo pod&amp;iacute;amos hacer antes sin problema alguno.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Esto nos lleva al dibujo siguiente, tomado tambi&amp;eacute;n del art&amp;iacute;culo citado:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;font:12.0px Helvetica;"&gt;&lt;img style="float:left;" title="xaml_cpp.png" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rfog/xaml_5F00_cpp.png" alt="xaml_cpp" width="600" height="319" border="0" /&gt;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;font:12.0px Helvetica;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Eso es lo que hace Visual C++ a la hora de crear una ventana, generando estos cinco ficheros. El XAML contiene la definici&amp;oacute;n de la ventana y todo lo que pongamos dentro, y es id&amp;eacute;ntico a uno generado en C#. Tambi&amp;eacute;n genera otros dos con los nombres terminados en .g.h y en .g.cpp, que contienen c&amp;oacute;digo necesario para que el sistema pueda enlazar el archivo XAML con el c&amp;oacute;digo fuente que hayamos podido editar, que a su vez reside en otros dos sendos ficheros con las extensiones de .xaml.h y .xaml.cpp.&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Nuestro c&amp;oacute;digo debe ir en los ficheros terminados en xaml (para la definici&amp;oacute;n de la parte visual), xaml.h (para la declaraci&amp;oacute;n de la clase que representa la ventana) y xaml.cpp para todo lo dem&amp;aacute;s.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Debemos ser muy cuidadosos en no tocar los otros dos ficheros, que suelen ser generados de forma autom&amp;aacute;tica al vuelo por Visual Studio (y supongo que por Blend, pero eso no lo he probado todav&amp;iacute;a) y que, si hacemos algo mal, podemos tirar abajo el dise&amp;ntilde;ador y luego la aplicaci&amp;oacute;n no se cargar&amp;aacute; bien. Digamos que dichos ficheros son los equivalentes al &lt;em&gt;InitializeComponents()&lt;/em&gt; de &lt;em&gt;WindowsForms&lt;/em&gt; y que, si los tocamos sin conocimiento de causa, podemos dejar inservible nuestra ventana.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Os dejo que jugu&amp;eacute;is con lo descubierto. Creaos una aplicaci&amp;oacute;n vac&amp;iacute;a, ponedle un bot&amp;oacute;n o lo que quer&amp;aacute;s y a&amp;ntilde;adidle un evento.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205119" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>C++/CX (III). Objetos COM</title><link>http://geeks.ms/blogs/rfog/archive/2012/05/18/c-cx-iii-objetos-com.aspx</link><pubDate>Fri, 18 May 2012 14:14:09 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205115</guid><dc:creator>Rafael Ontivero</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Decíamos &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/11/04/c-cx-ii-c-cx-vs-wrl.aspx"&gt;ayer&lt;/a&gt; y &lt;a href="http://geeks.ms/blogs/rfog/archive/2011/10/31/c-cx-windows-8-y-el-nuevo-subsistema-winrt-i.aspx"&gt;antes de ayer&lt;/a&gt; que para crear aplicaciones Metro en Windows 8 podíamos usar, o bien el .NET Framework 4.5 con C# y &lt;a href="http://VB.NET"&gt;VB.NET&lt;/a&gt; o bien hacerlo con el tradicional C++. Ya conocemos que Microsoft se ha dado cuenta de que la &lt;em&gt;cosa manejada&lt;/em&gt; no deja de ser un poco juguete comparada con la nativa, y que hay muchísimas empresas que siguen, no solo con C++, sino incluso con MFC.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Independientemente de eso, lo cierto es que el API para Metro no es más que una variación de Win32, empaquetada y ofrecida mediante objetos COM nativos. La idea es cambiar Win32 y prohibirla para Metro, ofreciendo su equivalente mediante la biblioteca WRL que no es más que un encapsulado exportado mediante COM.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Aquí parece como si Microsoft matara dos pájaros de un tiro, ya que .NET utiliza COM internamente, o lo más parecido y cercano a ello. Por lo tanto, lo exportado mediante la WRL es tomado, por un lado por .NET y por el otro por C++ con su extensión CX.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Tenemos que decir que C++/CX es código nativo. Sin recolector de basura. Sin máquina virtual.  Compilado para un procesador específico. No es más que nuestro código escrito en C++ que utiliza objetos COM envueltos en una serie de clases &lt;em&gt;al estilo de .NET&lt;/em&gt;. De hecho, la sintaxis de C++/CX es la misma que la de C++/CLI, por lo que en un principio puede llevar a confusión.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;De todos modos, para aquellos que hayan leído el &lt;a href="http://www.gotw.ca/publications/C++CLIRationale.pdf"&gt;&lt;em&gt;Rationale&lt;/em&gt; de Sutter&lt;/a&gt; (&lt;a href="http://rfog.cmact.com/inicio.htm"&gt;versión en español de Octavio Hernández y del que suscribe aquí&lt;/a&gt;), sabrán que es la única otra sintaxis posible y, o bien escribimos en C++/CLI para el .NET clásico (léase Windows Forms) o bien lo hacemos en C++/CX para Metro. Y si bien podemos hacer ambas cosas para Windows 8, las aplicaciones C++/CLI serán las tradicionales, y las C++/CX las Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Con esto queremos decir que, usando C++/CX, tenemos acceso a toda la parafernalia nativa de C++ como la STL, Boost, C++11… y encima desarrollar para Metro. O dicho de otro modo: cualquier código que tengamos que no haga uso de ventanas ni de Win32 de forma directa no servirá para las aplicaciones Metro.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;La parte CX se activa con la opción /ZW del compilador, y lo que hace es mapear los objetos COM en clases normales y corrientes. Allí donde antes teníamos que enfangarnos con &lt;em&gt;IInspectable&lt;/em&gt;, y usar toda la parafernalia COM, ahora simplemente tenemos que usar una&lt;em&gt; ref class&lt;/em&gt; normal y corriente con sus constructores, destructores, propiedades, delegados y métodos que recibirán los tipos de datos más estándar y que devolverán también valores estándar.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;O en otras palabras: las clases que nos ofrece el API de Metro (por llamarlo de alguna manera, ya que es el API de WRL) son envoltorios a objetos COM WRL. Y de igual forma que los programadores de Windows han construido la WRL, nosotros también podremos tener objetos del mismo tipo, hechos por nosotros y ofrecidos a terceros. &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Supongamos que tenemos una clase cualquiera con un método llamado &lt;em&gt;Compute &lt;/em&gt;que toma dos enteros y devuelve un valor de estado. Para nosotros, que usamos dicha clase, tan sólo tenemos que llamar al método y esperar el resultado.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Pero internamente, lo que está haciendo el &lt;em&gt;sugar syntax&lt;/em&gt; de la parte CX del compilador, es algo así:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Consolas;"&gt;//Parte del “consumidor” de la case&lt;br /&gt; inline int Computer::Compute(int first, int second) { &lt;br /&gt;     int result; &lt;br /&gt;     HRESULT hr = ___impl_Compute(this, first, second, &amp;amp;result); &lt;br /&gt;     if (hr != 0) ___impl_throw_for_hr(hr); &lt;br /&gt;     return result; &lt;br /&gt; } &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;min-height:13.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Y luego, el método &lt;em&gt;__impl_Compute&lt;/em&gt;, que está en el lado del componente (si fuera una clase WRL estaría &lt;em&gt;dentro&lt;/em&gt; de la WRL), sería algo así:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;HRESULT __stdcall ___impl_Compute(Computer* cmp, &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;  int first, int second, int* result) { &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;    try { *result = cmp-&amp;gt;Compute(first, second); } &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;    catch(Platform::Exception^ e) { return e-&amp;gt;HResult; } &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;    return S_OK; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;}&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;De este modo vemos cómo podemos acceder a un método sin toda la parafernalia ni las ofuscaciones de COM. Y no queremos entrar en detalles sobre por qué COM es tan &lt;em&gt;así&lt;/em&gt;, mayormente porque no tenemos ni repajolera idea.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;No obstante, si así lo queremos por detalles de la implementación o simplemente por ser &lt;em&gt;guays&lt;/em&gt;, tenemos acceso a la parte interna de WRL de la siguiente manera:&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;//Assuming 32-bit pointers &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;Computer^ computer = ref new Computer; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;int* vtable_array = (int*)computer; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;int* icomputer_vtable = (int*)vtable_array[0]; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;int* compute_will_be_fptr = (int*)icomputer_vtable[6]; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;typedef HRESULT (__stdcall *compute_fptr_t)(Computer*, &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;  int, int, int*); &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;compute_fptr_t compute_fptr = (compute_fptr_t)compute_will_be_fptr; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;//…use compute_fptr freely :-)&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;No voy a comentar nada de aquí porque simplemente me parece algo demasiado barroco y supongo que sólo será útil si te encuentras con algún bug en la parte CX del compilador… También podemos acceder a la interfaz COM pura a través del método &lt;em&gt;RoActivateInstance&lt;/em&gt;, pero lo dejamos para los &lt;em&gt;hardcore&lt;/em&gt;.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;***&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Finalmente hay una opción del compilador no documentada para que éste nos muestre una estructura detallada del componente WinRT que especifiquemos: &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 36.0px;font:10.0px Calibri;"&gt;/d1reportSingleClassLayout&amp;lt;CLASSNAME&amp;gt;&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;"&gt;Y de nuevo dejamos la opción para los &lt;em&gt;aventureros&lt;/em&gt;, que yo ya me he cansado de escribir por hoy.&lt;/p&gt;
&lt;p style="margin:0.0px 0.0px 0.0px 0.0px;text-align:justify;text-indent:18.0px;font:14.0px Calibri;min-height:17.0px;"&gt; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205115" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rfog/archive/tags/c_2B002B00_/default.aspx">c++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Win32/default.aspx">Win32</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Biblioteca+de+C_2B002B00_/default.aspx">Biblioteca de C++</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/C_2B002B002F00_CX/default.aspx">C++/CX</category><category domain="http://geeks.ms/blogs/rfog/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>[Pregunta] Sobre métodos extensores II</title><link>http://geeks.ms/blogs/lruiz/archive/2012/05/18/pregunta-sobre-m-233-todos-extensores-ii.aspx</link><pubDate>Fri, 18 May 2012 11:04:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205104</guid><dc:creator>Luis Ruiz Pavón</dc:creator><slash:comments>12</slash:comments><description>Dada la siguiente clase: public class Striker { public string Name { get; set; } public int Goals { get; set; } public Look Looks { get; set; } } public enum Look { Handsomd, Ugly } Creamos un m&amp;eacute;todo extensor Where : public static class Extensions { public static IEnumerable&amp;lt;Striker&amp;gt; Where( this IEnumerable&amp;lt;Striker&amp;gt; source, Func&amp;lt;Striker, bool &amp;gt; filter) { foreach (var striker in source) { if (filter(striker) &amp;amp;&amp;amp; (striker.Looks == Look.Handsomd)) yield return striker;...(&lt;a href="http://geeks.ms/blogs/lruiz/archive/2012/05/18/pregunta-sobre-m-233-todos-extensores-ii.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205104" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lruiz/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>.NET Framework en iOS, Android y WP7. Conoce Mono (II)</title><link>http://geeks.ms/blogs/secondnug/archive/2012/05/18/net-framework-en-ios-android-y-wp7-conoce-mono-ii.aspx</link><pubDate>Fri, 18 May 2012 07:50:18 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205100</guid><dc:creator>Fran Díaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;El próximo &lt;strong&gt;martes 22 de mayo&lt;/strong&gt;, en Second Nug seguimos explorando “nuevos mundos” de la mano del proyecto &lt;strong&gt;Mono&lt;/strong&gt;, el cual pudimos ver el pasado día 8 sobre entornos de escritorio y ahora llega el turno de verlo sobre dispositivos móviles, más allá de nuestro querido Windows Phone.&lt;/p&gt;  &lt;p&gt;Veremos como realizar desarrollos con C# y .NET para las principales plataformas móviles: iOS de Apple, Android de Google y Windows Phone de Microsoft. Para ello volveremos a disfrutar de la experiencia y buen hacer de &lt;strong&gt;Lluis Sánchez&lt;/strong&gt; miembro del equipo de desarrollo del proyecto Mono desde hace 10 años.&lt;/p&gt;  &lt;p&gt;Url Registro: &lt;a title="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513220&amp;amp;Culture=es-AR" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513220&amp;amp;Culture=es-AR"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513220&amp;amp;Culture=es-AR&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032513220&amp;amp;Culture=es-AR"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="foro_mono_2" border="0" alt="foro_mono_2" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/foro_5F00_mono_5F00_2_5F00_1491B3A5.jpg" width="472" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Además, todos los eventos anteriores de este año así como sus materiales están aquí disponibles: &lt;/p&gt;  &lt;p&gt;- &lt;a href="http://www.secondnug.com/EventosDesarrollo/tabid/57/Default.aspx%20"&gt;Eventos Desarrollo&lt;/a&gt;    &lt;br /&gt;Y dispones de nuestro &lt;a href="http://www.secondnug.com/Hist%C3%B3ricodeEventos/tabid/87/Default.aspx"&gt;Histórico de Eventos,&lt;/a&gt; con los eventos desde 2008 a 2011: &lt;/p&gt;  &lt;p&gt;Esperamos veros allí &lt;img alt="Guiño" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/secondnug/wlEmoticon_2D00_winkingsmile_5F00_1B62A53F.png" /&gt;&lt;/p&gt;  &lt;p&gt;Un Saludo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205100" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/secondnug/archive/tags/WebCast/default.aspx">WebCast</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/secondnug/archive/tags/SecondNUG/default.aspx">SecondNUG</category></item></channel></rss>
