<?xml version='1.0' encoding='UTF-8'?> <rss version='2.0'><channel><title>http://michael.carbenay.info</title><link>http://michael.carbenay.info/</link><language>fr-Fr</language><generator>CPointSoftware e-commerce (weblogs module)</generator><item><title>WF4 – Afficher / Cacher des informations dans le designer</title><link>http://michael.carbenay.info/post-420.htm</link><pubDate>Thu, 18 Mar 2010 23:00:00 GMT</pubDate><description><![CDATA[<p>Je consulte depuis quelques jours pas mal de blogs concernant Workflow Foundation dont <a href="http://blogs.codes-sources.com/jeremyjeanson/">celui de Jérémy Jeanson</a> qui contient des tonnes d’informations super utiles. En voyant son billet intitulé <a href="http://blogs.codes-sources.com/jeremyjeanson/archive/2010/03/16/wf4-activity-avec-vue-d-tail-masqu-e-par-d-faut-vive-wpf.aspx">[WF4] Activity avec vue détail masquée par défaut, vive WPF!</a>, je me suis demandé si il n’existait pas une solution me permettant, à moi en tant que développeur, de faire la même chose sans trop empiéter sur le boulot du designer.</p>  <p>Donc, le but du jeu, c’est de permettre, dans le concepteur de workflow, de gérer le mode collapse/expand des activités, donc de passer de ca :</p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://files.blog-engine.net/1/26909.png" width="240" height="204" /> </p>  <p>à ça (enfin, avec des informations utiles, pas simplement avec du texte…): </p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://files.blog-engine.net/1/9134.png" width="245" height="221" /> </p>  <p>Comme il ne s’agit de modifier l’apparence du contrôle mais bien d’implémenter une fonctionnalité, je ne suis pas fan d’une approche basée sur des ControlTemplates. Je sais bien qu’il ne s’agit que d’un concepteur pour une activité et donc qu’il y a peu de chance qu’un designer passe par là, mais bon, c’est un reflexe :)</p>  <p>Pour faire la même chose, écrivons d’abord un convertisseur qui permet de prendre transformer un booleen en Visibility. En plus, ça pourrait resservir dans plein d’autres cas :</p>  <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: 541px; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 608px; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">   <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet">     <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">using</span> System;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">using</span> System.Collections.Generic;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> <span style="color: #0000ff">using</span> System.Linq;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> <span style="color: #0000ff">using</span> System.Text;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> <span style="color: #0000ff">using</span> System.Windows.Data;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> <span style="color: #0000ff">using</span> System.Windows;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span> <span style="color: #0000ff">namespace</span> WorkflowConsoleApplication3</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> {</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> VisibleIfTrue : IValueConverter</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>     {</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>         <span style="color: #cc6633">#region</span> IValueConverter Members</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">object</span> Convert(<span style="color: #0000ff">object</span> <span style="color: #0000ff">value</span>, Type targetType, </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>             <span style="color: #0000ff">object</span> parameter, System.Globalization.CultureInfo culture)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>         {</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span>             <span style="color: #0000ff">if</span> (<span style="color: #0000ff">value</span> <span style="color: #0000ff">is</span> <span style="color: #0000ff">bool</span>)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span>                 <span style="color: #0000ff">return</span> (<span style="color: #0000ff">bool</span>)<span style="color: #0000ff">value</span> ? <br />&#160;&#160;&#160;&#160; Visibility.Visible : Visibility.Collapsed;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span>             <span style="color: #0000ff">if</span> (<span style="color: #0000ff">value</span> <span style="color: #0000ff">is</span> <span style="color: #0000ff">bool</span>?)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum20">  20:</span>                 <span style="color: #0000ff">return</span> ((<span style="color: #0000ff">bool</span>?)<span style="color: #0000ff">value</span>).GetValueOrDefault() ?</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum21">  21:</span>           Visibility.Visible : Visibility.Collapsed;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum22">  22:</span>             <span style="color: #0000ff">return</span> Visibility.Collapsed;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum23">  23:</span>         }</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum24">  24:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum25">  25:</span>         <span style="color: #0000ff">public</span> <span style="color: #0000ff">object</span> ConvertBack(<span style="color: #0000ff">object</span> <span style="color: #0000ff">value</span>, Type targetType, </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum26">  26:</span>             <span style="color: #0000ff">object</span> parameter, System.Globalization.CultureInfo culture)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum27">  27:</span>         {</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum28">  28:</span>             <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> NotImplementedException();</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum29">  29:</span>         }</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum30">  30:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum31">  31:</span>         <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum32">  32:</span>     }</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum33">  33:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum34">  34:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum35">  35:</span> }</pre>
<!--CRLF--></div>
</div>

<p>L’implémentation est un peu basique, mais on s’en contentera pour les besoins de la démonstration.</p>

<p>Une fois ce convertisseur réalisé, on va pouvoir s’en servir pour afficher ou cacher le contenu du concepteur :</p>

<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: 538px; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 448px; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">sap:ActivityDesigner</span> <span style="color: #ff0000"><br />            x:Class</span><span style="color: #0000ff">=&quot;WorkflowConsoleApplication3.ExempleDesigner&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>     <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>     <span style="color: #ff0000">xmlns:x</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>     <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">=&quot;This&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #ff0000">xmlns:local</span><span style="color: #0000ff">=&quot;clr-namespace:WorkflowConsoleApplication3&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     <span style="color: #ff0000">xmlns:sap</span><span style="color: #0000ff">=&quot;clr-namespace:System.Activities.Presentation;<br />&#160;&#160;&#160;&#160; assembly=System.Activities.Presentation&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>     <span style="color: #ff0000">xmlns:sapv</span><span style="color: #0000ff">=&quot;clr-namespace:System.Activities.Presentation.View;<br />&#160;&#160;&#160;&#160;&#160; assembly=System.Activities.Presentation&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>     </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">sap:ActivityDesigner.Resources</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">local:VisibleIfTrue</span> <span style="color: #ff0000">x:Key</span><span style="color: #0000ff">=&quot;VisibleIfTrue&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">sap:ActivityDesigner.Resources</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">StackPanel</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">TextBlock</span> <span style="color: #ff0000">Text</span><span style="color: #0000ff">=&quot;La version minimale du designer&quot;</span> <span style="color: #ff0000"><br />         TextWrapping</span><span style="color: #0000ff">=&quot;Wrap&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>         <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>         </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid</span> <span style="color: #ff0000">Visibility</span><span style="color: #0000ff">=&quot;{Binding ElementName=This, <br />&#160;&#160;&#160;&#160; Path=ShowExpanded, Converter={StaticResource VisibleIfTrue}}&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">Label</span> <span style="color: #ff0000">Content</span><span style="color: #0000ff">=&quot;des informations supplémentaires&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span>         <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum20">  20:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum21">  21:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">StackPanel</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum22">  22:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">sap:ActivityDesigner</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF--></div>
</div>

<p>Voila ! évidemment, si vous voulez intervertir les deux blocs au lieu de cacher seulement le second, il vous faudra faire le même travail (mais avec un VisibleIfFalse) sur la première grid.</p>]]></description><guid>http://michael.carbenay.info/post-420.htm</guid></item><item><title>Pas déçu des premières heures du Mix’10</title><link>http://michael.carbenay.info/post-418.htm</link><pubDate>Mon, 15 Mar 2010 23:33:59 GMT</pubDate><description><![CDATA[<p>Et je n’y suis même pas !! 1h30 de keynotes + quelques vidéos “live” supplémentaires sur <a title="http://live.visitmix.com/" href="http://live.visitmix.com/">http://live.visitmix.com/</a>, et me voila content pour toute la semaine ! Cela faisait quelques mois que je regardais avec un certain désespoir la fin de la plateforme Windows Mobile 6.x.</p>  <p>Non pas que cette fin ne soit pas méritée : WinMo n’a pas beaucoup évolué depuis mon premier PocketPC, en 2000 : malgré un certain nombre de nouvelles fonctionnalités pas de mise à jour, ou presque, de l’interface. Joe Belfiore (vice président pour la section Windows Phone) vient de bien le résumer : “il y a 10 ans […] on se concentrait surtout sur Office et ce genre de chose, aujourd’hui le marché a evolué”, et franchement, si le coté développeur était encore inégalé jusqu’à l’apparition d’Android (et ne me parlez pas de l’iPhone, Objective-C/xCode/InterfaceBuilder ils sont très loin de jouer dans la même catégorie), le reste de la plateforme accuse clairement son âge.</p>  <p>Il apparaît que Microsoft a repensé toute l’interface et - qui l’aurait cru ? – l’interface est quasi principalement typographique. En plus elle est particulièrement réussie : simple, voir épurée (mis à part peut-être un peu trop d’animations…) et semble très adaptée au format.. Le fait que cela ressemble (un peu) à ce que je faisais dans mes applications “Line Of Business” n’est peut-être pas étranger au fait que je trouve cela super joli :)</p>  <p>Quoiqu’il en soit, Windows Phone 7, alors que nous n’avons pas encore de devices, semble vraiment formidable. Quelques exemples pour vous donner l’eau à la bouche :</p>  <ul>   <li>L’application de l’associated press, la video ci-dessous n’est pas exceptionnelle, mais en attendant la vidéo officielle du keynote, c’est mieux que rien… </li> </ul>  <div style="padding-bottom: 0px; margin: 0px auto; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:897ca7be-2516-4611-a4b2-0a142ed4fdd8" class="wlWriterEditableSmartContent"><div id="4a60d0b2-69cb-44b9-a7a9-3d840a39c851" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=P27w0-Vvkpw&amp;rel=0&amp;border=1&amp;color1=0xe8e8e8&amp;color2=0xe8e8e8&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" target="_new"><img src="http://files.blog-engine.net/1/6331.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('4a60d0b2-69cb-44b9-a7a9-3d840a39c851'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/P27w0-Vvkpw&amp;rel=0&amp;border=1&amp;color1=0xe8e8e8&amp;color2=0xe8e8e8&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/P27w0-Vvkpw&amp;rel=0&amp;border=1&amp;color1=0xe8e8e8&amp;color2=0xe8e8e8&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div></div></div>  <p>&#160;</p>  <ul>   <li>Les outils de développement sont déjà disponibles en CTP, gratuitement et la mise à jour vers Blend 4 pour les “interface designers” sera gratuite… </li> </ul>  <p>&#160;</p>  <ul>   <li>Tout le développement se fait soit par XNA (on va dire DirectX pour .net pour simplifier) pour les jeux et Silverlight pour le reste. </li> </ul>  <p>Bon, pas de tout ça, j’ai installé le SDK, je vais faire joujou avec…</p>]]></description><guid>http://michael.carbenay.info/post-418.htm</guid></item><item><title>mix’10, les infos sur Windows phone 7 series ?</title><link>http://michael.carbenay.info/post-417.htm</link><pubDate>Sun, 14 Mar 2010 16:58:39 GMT</pubDate><description><![CDATA[<p>Demain, 15 mars, c’est le début de MIX’10, la grand messe Microsoft pour les développeurs Web. Cette année, le sujet qui est sur toutes les lèvres, c’est forcément Windows Phone Series 7 ! Après 10 ans de plus ou moins bons et loyaux services, l’interface de Windows Mobile va – enfin !!! – changer, et tout ce que l’on a vu jusqu’à maintenant semble très prometteurs, aux quelques bugs de jeunesse près.</p>  <p>MIX’10 ce sera l’occasion, pour les développeurs de comprendre un peu comment la bête fonctionnera et surtout – chose bien plus importante – de savoir comment on pourra faire des applications :) Après quelques informations dévoilée au GDC sur la partie “jeux”, on attends de pieds fermes Charlie Kindel (<a href="http://twitter.com/ckindel" target="_blank">@ckindel</a>) et les autres :)</p>  <p>N’étant pas sur place, j’apprécie particulièrement que toutes les sessions soient enregistrées et disponibles après seulement quelques heures et j’ai déjà prévu les popcorns pour les deux Keynotes :)</p>]]></description><guid>http://michael.carbenay.info/post-417.htm</guid></item><item><title>si, si, je suis encore en vie</title><link>http://michael.carbenay.info/post-416.htm</link><pubDate>Fri, 08 Jan 2010 06:10:00 GMT</pubDate><description><![CDATA[<p>Ah oui, j’avais oublié… Bonne année 2010, et désolé pour ce silence depuis pas loin d’un an… Je suis sûr que j’ai dû beaucoup manquer à ma vingtaine d’abonnés RSS :)</p>]]></description><guid>http://michael.carbenay.info/post-416.htm</guid></item><item><title>2010 : l’année du retour de la vengeance du format slate ?</title><link>http://michael.carbenay.info/post-415.htm</link><pubDate>Fri, 08 Jan 2010 05:08:00 GMT</pubDate><description><![CDATA[<p>Nouvelle rumeur de tablettes chez Apple, nouveau PC <a href="http://www.cnetfrance.fr/news/tablette-microsoft-hp-ces-39712012.htm">slate chez HP</a>, <a href="http://www.clubic.com/actualite-318544-lenovo-ideapad-u1-hybride-ordinateur-portable.html">Lenovo</a>, <a href="http://www.cnetfrance.fr/news/dell-slate-tablette-tactile-5-pouces-39712046.htm">Dell</a>, etc, le format “slate” semble très à la mode en ce moment ! Entre les stars du C.E.S. – oui, je sais ca ne veux rien dire : cela fait plusieurs années que les UMPC/MID sont à l’honneur là bas sans qu’il y ait aucun signe de leur adoption par le grand public – et les rumeurs persistantes, il semblerait que le format “écran tactile seul” soit à la mode.</p>  <p align="center"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image001[1]" border="0" alt="image001[1]" src="http://files.blog-engine.net/1/13562.jpg" width="400" height="350" /> </p>  <p>C’est pour moi l’occasion de ressortir mon vieux Tablet PC (un Acer Travelmate je-sais-plus-combien), mon compaq TC1000 (acheté d’occase il y a pas si longtemps que ça) et mon Samsung Q1… Bah oui, ca fait pas loin de 10 ans (j’exagère, ca n’en fait que 8 en fait…) que Microsoft et surtout ses partenaires s’essayent à ce genre de choses, sans trop de succès jusqu’à présent. Apparues bien trop tôt, les TabletPC sont de vraies petites merveilles de technologie, mais … comment dire … souffraient de problèmes rédhibitoires : principalement leur coûts astronomiques et le peu d’application grand public qui leur étaient destinées.&#160; Si le TravelMate (pb hardware) et le TC1000 (manque de puissance) ne me servent plus, le Q1 est encore utilisé plusieurs fois par semaines comme “télécommande domotique géante” avec pas mal de succès, sans compter quelques – trop rares – démonstrations en clientèle plutôt bluffantes pour l’auditoire.</p>  <p>Oyé oyé, donc, voici revenu le temps <strike>des rires et des chants, dans l’île aux enfants</strike> des modèles “slate”, et cela est très prometteur : le marché est suffisamment mature (merci l’iPhone) pour voir apparaître des applications passionnantes : je suis assez impatient de voir ce que ces 3 prochaines années nous réservent sur ce front.</p>]]></description><guid>http://michael.carbenay.info/post-415.htm</guid></item><item><title>Erreur “Required project systems are not installed” dans un projet de test</title><link>http://michael.carbenay.info/post-414.htm</link><pubDate>Thu, 07 Jan 2010 16:48:43 GMT</pubDate><description><![CDATA[<p>Si vous utilisez une version internationale de Visual Studio 2008 (je n’ai pas encore eu le problème avec la beta de 2010, alors c’est peut-être corrigé), vous avez peut-être déjà eu quelques soucis de fonctionnalités non disponibles. Pour moi, cet après-midi, c’est tout le système de tests unitaires qui était en rade, suite à une réinstallation. Plus moyen de charger les projets de tests, ni d’en créer de nouveau : rien !</p>  <p>Quelques conseils si vous rencontrez ce problème :</p>  <p>Commencez un bon vieux <strong>devenv.exe /resetSkipPkgs</strong>, à lancer depuis une ligne de commande</p>  <p>Si ce n’est pas mieux, essayez de faire <strong>Tests</strong> &gt; <strong>Nouveau Test</strong>. Si dans cet écran vous voyez un joli “Required project systems are not installed” à la place où vous vous attendiez à voir “Nouveau projet de test en c#”, eh bien vous avez gagné et avez le même problème que moi ! Pas de panique, ca se corrige assez facilement : Dans le menu <strong>Outils / Options</strong>, cherchez les “<strong>paramètres internationaux</strong>” et changez la langue utilisée pour correspondre à celle de votre installation de Visual Studio.</p>  <p><a href="http://files.blog-engine.net/1/37707.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://files.blog-engine.net/1/17859.png" width="544" height="196" /></a></p>]]></description><guid>http://michael.carbenay.info/post-414.htm</guid></item><item><title>les joies de l’assistance chez un FAI</title><link>http://michael.carbenay.info/post-412.htm</link><pubDate>Fri, 10 Apr 2009 13:09:45 GMT</pubDate><description><![CDATA[<p>Depuis quelques jours, et pour la seconde fois consécutive en moins d’un mois, une personne de ma famille rencontre des soucis de connexion chez son FAI. Ce matin, pour la troisième fois, j’ai pris contact avec l’assistance de celui-ci (bah, oui, être “l’informaticien” de la famille fait que tous ces problèmes me retombe dessus… je pense que vous savez ce que c’est :p). Le discours a parfois été un peu surréaliste, tenant du dialogue de sourd, en voici quelques morceaux choisis ! (je retire volontairement le nom du FAI et de sa box, mais il est facile à deviner).</p>  <p>[10-04-2009 11h31] [Début Session Tchat] [Service choisi: Technique]</p>  <p>[11h46] Assistance: Mme/M. ……, bienvenue sur le Tchat de …, vous êtes actuellement connecté(e) sur le salon Technique.</p>  <p>Votre adresse email de contact: ……    <br />Votre numéro de téléphone mobile de contact: …</p>  <p>Notez que vous pouvez à tout moment modifier vos éléments de contact (mail + mobile) depuis votre interface de gestion, à la rubrique &quot;Mon Abonnement&quot;.</p>  <p>11h46] Moi: bonjour</p>  <p>[11h48] Assistance: Bonjour</p>  <p>[11h48] Assistance: Quel est l'objet de votre demande …?</p>  <p>[11h48] Moi: je suis toujours sans connexion, ce qui commence à être un peu pénible</p>  <p>[11h49] Moi: …box n°…., qui reste sur le rectangle clignotant de connexion, tests en tout genre réalisés (hard reboot, test croisé, etc), sans succès</p>  <p><em>…</em></p>  <p>[11h54] Assistance: Est ce que le dysfonctionnement est dû à un orage, coupure de courant..... ?</p>  <p><em>…</em></p>  <p>[11h55] Moi: non</p>  <p>[11h56] Assistance: Quels sont les tests et les vérifications que vous avez effectués ?</p>  <p>[11h56] Moi: alors : hard reboot, vérification de la non présence de condensateurs, tests avec [une autre …box] <em>(edité pour retirer le nom)</em>, changement de filtre</p>  <p>[11h56] Moi: tout sans aucun résultat</p>  <p><em>…</em></p>  <p>[12h01] Assistance: Sur quelle entrée de la …box (derrière ) est branchée le câble RJ11 venant de la prise téléphonique murale ?</p>  <p><em>… la j’ai failli craquer… je lui dit en entrée de jeu que j’ai fait plein de tests et sa première vraie question est : “est-ce que tu as tout bien branché, banane ?”…</em></p>  <p>[12h01] Moi: le bon... <em>[du blah blah disant que j’ai passé le stade des compétences minimums]</em></p>  <p>[12h03] Moi: nous avons testé avec d'autres cables téléphoniques et un autre filtre pour s'assurer que cela ne venait pas non plus de la</p>  <p><em>…</em></p>  <p>[12h08] Assistance: Avez vous vérifié toutes les prises téléphoniques si présence de condensateur ?</p>  <p><em>… la pareil, un peu dur à supporter, j’ai déjà dit cela y a pas 10 messages…</em></p>  <p>[12h09] Assistance: Est ce que la …box est reliée à un rallonge téléphonique ?</p>  <p>[12h10] Moi: non</p>  <p>[12h10] Assistance: Avez vous une alarme, un interphone reliées à la ligne téléphonique France Télécom ?</p>  <p>[12h10] Moi: non</p>  <p>[12h11] Moi: avant que vous posiez la question : oui elle est branchée directement sur une prise, non il n'y a pas de sources d'ondes (micro ondes, enceintes, ordinateurs) à moins de quelques mètres</p>  <p><em>… vous devinez quelle sera sa prochaine question ? gagné ! …</em></p>  <p>[12h12] Assistance: Avez vous un halogène, néon, enceinte, ampli, démodulateur, domotique, micro onde...ou toute appareil rémanent autour de la …box ?</p>  <p><em>…</em></p>  <p>[12h13] Assistance: Avez vous testé avec d'autres connectivité : câble RJ11, filtre et une alimentation ?</p>  <p><em>… bon, après tout j’ai juste dit que j’avais essayé avec une autre …box, j’ai pas pensé à préciser “et tous ses cables”, ma faute, pour le filtre, c’est juste que j’aime me répéter, c’est pour ça que j’aime quand on me pose des questions auquelles j’ai déjà répondu…</em></p>  <p>[12h14] Moi: oui, comme dit précédemment, avec d'autres cables rjs, d'autres filtres et avec une autre …box entièrement, qui fonctionne parfaitement, c'est à dire avec tous ses cables, alimentations, carte wifi etc (ah oui, à noter que j'ai aussi essayé en retirant la carte wifi de ma …box)</p>  <p>Enfin, il a fallu une heure complète de dialogue de sourd de ce genre pour qu’il transmette enfin le dossier au service technique pour une vérification de la ligne. Si ca c’est pas du temps perdu, je ne sais pas ce que c’est !</p>]]></description><guid>http://michael.carbenay.info/post-412.htm</guid></item><item><title>Intégrer ClickOnce à une compilation TeamBuild</title><link>http://michael.carbenay.info/post-411.htm</link><pubDate>Tue, 24 Mar 2009 23:02:00 GMT</pubDate><description><![CDATA[<p>Eh bien, pour une journée de réunions, on peut dire que le résultat est plus productif que d’habitude ! Entre deux réunions de gestion de projet, j’ai en effet pu mettre en place une chose qui manquait depuis plusieurs mois à l’un de mes partenaires : une automatisation complète de son processus de Build, allant jusqu’à l’élaboration de la release ClickOnce.</p>  <p>Voici donc un petit guide, basé sur les “découvertes” de cette journées pour obtenir un déploiement ClickOnce au cours d’un Build automatisé. Ces informations sont plus qu’inspirées par <a href="http://geekswithblogs.net/thibbard/archive/2007/06/01/Publishing-a-ClickOnce-app-with-TeamBuild.aspx">Tim Hibbard</a>, en fait on pourrait presque dire qu’il s’agit d’une version traduite et mise à jour de ses instructions.</p>  <p>Premier point important, récupérez le <a href="http://msbuildextensionpack.codeplex.com/">MSBuild Extension pack à partir de Codeplex</a> et installez les sur chacun des serveurs/postes que vous utiliserez pour compiler vos projets.</p>  <p>Une fois ce composant indispensable récupéré, il va falloir modifier le fichier tfsbuild.proj correspondant à votre build :</p>  <ul>   <li>pour ajouter des références aux extensions. Ici deux solutions : soit se conformer aux instructions de Tim Hibbard, et créer un PropertyGroup spécifique à ClickOnce, soit – et c’est cette solution qui sera détaillé ci-après – utiliser la tâche AssemblyInfo et ses dérivés pour gérer à la fois ClickOnce et les versions des assemblies. Il vous faudra donc ajouter deux lignes, dans la partie “imports” </li> </ul>  <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: 540px; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">   <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet">     <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Import</span> <span style="color: #ff0000">Project</span><span style="color: #0000ff">=&quot;$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.<br />        ExtensionPack.tasks&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Import</span> <span style="color: #ff0000">Project</span><span style="color: #0000ff">=&quot;$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.<br />        ExtensionPack.VersionNumber.targets&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF--></div>
</div>

<ul>
  <li>Puis définir le property group nécessaire à mettre à jours les versions des assemblies (et de click once)</li>
</ul>

<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: 540px; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #008000">&lt;!-- Properties for controlling the Assembly Version --&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">PropertyGroup</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyMajorVersion</span><span style="color: #0000ff">&gt;</span>9<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyMajorVersion</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyMinorVersion</span><span style="color: #0000ff">&gt;</span>0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyMinorVersion</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyBuildNumber</span><span style="color: #0000ff">&gt;</span>0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyBuildNumber</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyRevision</span><span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyRevision</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">PropertyGroup</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> <span style="color: #008000">&lt;!-- Properties for controlling the Assembly File Version --&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">PropertyGroup</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyFileMajorVersion</span><span style="color: #0000ff">&gt;</span>9<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyFileMajorVersion</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyFileMinorVersion</span><span style="color: #0000ff">&gt;</span>0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyFileMinorVersion</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyFileBuildNumber</span><span style="color: #0000ff">&gt;</span>0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyFileBuildNumber</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">AssemblyFileRevision</span><span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyFileRevision</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">PropertyGroup</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF--></div>
</div>

<ul>
  <li>Nous allons ensuite un peu ruser pour mettre à jour le FileRevision, en effet, le partenaire en question utilise un schéma de numéros du type “année”.”release”.”itération interne”.”version de compilation” depuis un certain temps (par exemple 9.0.3.228 signifie “version 2009, release 1, itération N°3 du 28/02). Il a donc fallu contourner les limitations de la tâche AssemblyInfo :</li>
</ul>

<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: 540px; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Target</span> <span style="color: #ff0000">Name</span><span style="color: #0000ff">=&quot;VersionPublish&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">MSBuild.ExtensionPack.Framework.DateAndTime</span> TaskAction=&quot;Get&quot; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>                                                Format=&quot;MMdd&quot;<span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">Output</span> <span style="color: #ff0000">TaskParameter</span><span style="color: #0000ff">=&quot;Result&quot;</span> </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>           <span style="color: #ff0000">PropertyName</span><span style="color: #0000ff">=&quot;AssemblyFileRevision&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>   <span style="color: #0000ff">&lt;/</span><span style="color: #800000">MSBuild.ExtensionPack.Framework.DateAndTime</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Target</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Target</span> <span style="color: #ff0000">Name</span><span style="color: #0000ff">=&quot;BeforeCompile&quot;</span> <span style="color: #ff0000">DependsOnTargets</span><span style="color: #0000ff">=&quot;VersionPublish&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">Message</span> <span style="color: #ff0000">Text</span><span style="color: #0000ff">=&quot;FileVersion générée par le VersionNumber.Targets </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>            $(AssemblyFileMajorVersion).$(AssemblyFileMinorVersion).</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>            $(AssemblyFileBuildNumber).$(AssemblyFileRevision)&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Target</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF--></div>
</div>

<p>Comme vous devez vous en douter, le deuxième noeud ne sert qu’à tracer dans le fichier de génération le numéro généré… c’est assez pratique pour débugger, donc autant le mettre :)</p>

<ul>
  <li>reste ensuite à dire à TeamBuild de publier une version de l’application :</li>
</ul>

<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: 540px; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Target</span> <span style="color: #ff0000">Name</span><span style="color: #0000ff">=&quot;AfterCompile&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>   <span style="color: #0000ff">&lt;</span><span style="color: #800000">MSBuild</span> <span style="color: #ff0000">Projects</span><span style="color: #0000ff">=&quot;$(SolutionRoot)\project.csproj&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>   <span style="color: #ff0000">Properties</span><span style="color: #0000ff">=&quot;PublishDir=$(OutDir)publish\;InstallFrom=Web;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>     UpdateRequired=true;InstallUrl=...;</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     MinimumRequiredVersion=$(AssemblyFileMajorVersion)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     .$(AssemblyFileMinorVersion)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>     .$(AssemblyFileBuildNumber).$(AssemblyFileRevision);</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>     ApplicationVersion=$(AssemblyFileMajorVersion)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>     .$(AssemblyFileMinorVersion).</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>     $(AssemblyFileBuildNumber).$(AssemblyFileRevision)&quot;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>   <span style="color: #ff0000">Targets</span><span style="color: #0000ff">=&quot;Publish&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Target</span><span style="color: #0000ff">&gt;</span></pre>
<!--CRLF--></div>
</div>

<p>Si vous avez besoin de modifier des options de publication, le plus simple est probablement d’ouvrir votre fichier .csproj dans un notepad et de regarder le nom des différents paramètres, en tout cas, c’est comme cela que j’ai trouvé les “MinimumRequiredVersion” ou autre “InstallUrl”.</p>

<p>Voila, avec ces quelques lignes en plus, vous aurez un très joli dossier <strong>publish/</strong> dans le dossier de sortie de votre définition de build. Il existe peut-être une solution plus pratique que le “&lt;MSBuild… Targets=’publish’ /&gt;”, mais c’est ce que j’ai trouvé de plus pratique et de plus facile à mettre en place pour le moment… </p>]]></description><guid>http://michael.carbenay.info/post-411.htm</guid></item><item><title>snifff, IE 8 ne permet plus un bug que j’aimais bien…</title><link>http://michael.carbenay.info/post-410.htm</link><pubDate>Tue, 24 Mar 2009 15:11:03 GMT</pubDate><description><![CDATA[<p>Si vous venez sur ce site avec un navigateur comme Chrome, Firefox ou autre, vous ne saurez pas de quoi je parle, mais une des différences d’affichage entre IE7 et le reste du monde était sa “capacité” à tronquer un texte en exploitant un bug CSS… IE8 semble avoir corrigé ce bug, il ne me reste donc plus qu’a chercher si on peut faire la même chose en CSS valide…</p>  <p>Le rendu sous IE7 : </p>  <p align="center"><a href="http://files.blog-engine.net/1/26831.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sousie7" border="0" alt="sousie7" src="http://files.blog-engine.net/1/34847.jpg" width="221" height="56" /></a> </p>  <p>Sous IE8 :</p>  <p><a href="http://files.blog-engine.net/1/13420.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sousie8" border="0" alt="sousie8" src="http://files.blog-engine.net/1/7856.jpg" width="172" height="55" /></a></p>]]></description><guid>http://michael.carbenay.info/post-410.htm</guid></item><item><title>Microsoft Expression Web SuperPreview for Internet Explorer</title><link>http://michael.carbenay.info/post-409.htm</link><pubDate>Wed, 18 Mar 2009 16:00:28 GMT</pubDate><description><![CDATA[<p>Ehhhh bah, si ca c’est pas du nom made in Microsoft, je ne vois pas ce que c’est ! il manque un petit “R2 with service pack 1” pour compléter le titre du nom d’application le plus long de l’histoire !</p>  <p>Microsoft Expression Web SuperPreview for Internet Explorer R2 with Service Pack 2 Release Candidate 1, ca en jetterai un max !! d’autant plus que ca donne une super abréviation : MEWSPIER2SP2RC1 !</p>  <p>Tout ça pour dire que vous <a href="http://www.istartedsomething.com/20090318/expression-web-superpreview-cross-browser-testing/">devriez lire le post de Long Zheng</a>, sur le futur ajout à Expression Web (à ce propos, il trouve ce nom particulièrement bon aussi !).</p>]]></description><guid>http://michael.carbenay.info/post-409.htm</guid></item><item><title>Jeudi… on doit être jeudi…</title><link>http://michael.carbenay.info/post-408.htm</link><pubDate>Thu, 05 Mar 2009 22:54:00 GMT</pubDate><description><![CDATA[<p>D’aucuns abhorrent le lundi, mais moi c’est surtout le jeudi que j’ai du mal à supporter… Et encore une fois, aujourd'hui, ce jour maudit m’a donné des raisons de le haïr :)</p>  <p>Un petit résumé de la situation, histoire de vous faire rire un peu… Nous possédons 3 serveurs que l’on pourraient qualifier de serveurs d’infrastructure : black, blue et orange. Le premier (black) est notre serveur ActiveDirectory principal, serveur DHCP et DNS; il s’agit d’une&#160; machine assez ancienne, qui ne fait donc pas grand chose… Blue, en plus de son rôle de serveur “secondaire” AD fait aussi office de serveur de fichiers. Enfin, orange est notre serveur Exchange. Imaginez maintenant que, suite à une coupure électrique et à un problème d’onduleur, black fasse un drôle de bruit et blue n’en fasse absolument plus (alimentation grillée)…. Vous avez compris, nous sommes bel et bien jeudi ! :)</p>  <p>Tout cela pour dire que, si vous avez besoin un jour de transférer en urgence la responsabilité d’ActiveDirectory à partir d’un serveur qui n’est plus en ligne, vous aurez besoin des articles de base de connaissance suivants :    <br />- <a href="http://support.microsoft.com/kb/216498/fr">216498</a> : Comment faire pour supprimer des données dans Active Directory après l'échec d'une rétrogradation de contrôleur de domaine     <br />- <a href="http://support.microsoft.com/kb/255504/fr">255504</a> : Utilisation de Ntdsutil.exe pour prendre ou transférer des rôles FSMO vers un contrôleur de domaine     <br />- <a href="http://support.microsoft.com/kb/324801/fr">324801</a> : Comment faire pour afficher et transférer des rôles FSMO dans Windows Server 2003</p>  <p>Vous aurez certainement aussi besoin de l’outil DCDIAG.exe et peut être de nltest.exe…</p>  <p>Bonne chance :)</p>]]></description><guid>http://michael.carbenay.info/post-408.htm</guid></item><item><title>Pourquoi continuer à conserver l’edit and continue dans Visual Studio ?</title><link>http://michael.carbenay.info/post-406.htm</link><pubDate>Tue, 03 Mar 2009 17:04:36 GMT</pubDate><description><![CDATA[<p>Je me demande vraiment si quelqu’un arrive encore à se servir de l’edit&amp;continue dans VS, et si cela vaut donc encore la peine de le conserver… Voici quelques exemples de cas où il est impossible de s’en servir :</p>  <ul>   <li>le code est compilé en 64bits (en anyCPU si vous êtes sur une machine 64bits) </li>    <li>le code est “optimisé” (elle me fait toujours rire celle-la…) </li>    <li>vous avez changé une classe d’un projet dépendant depuis une autre instance de VS ou notepad ou autre </li>    <li>la solution contient un projet Silverlight </li>    <li>vous venez de modifier une méthode intégrant une expression lambda ou une méthode anonyme (de plus en plus fréquent, surtout si vous faites du WPF et avez donc beaucoup de traitements asynchrones) </li>    <li><strike>la Lune est en conjonction avec Saturne</strike> (ouais, non, pas celle là en fait…) </li> </ul>  <p>Grosso modo, neuf fois sur dix, quand on veux modifier une méthode ça coince, la question est donc posée : à quoi cela sert-il ?</p>]]></description><guid>http://michael.carbenay.info/post-406.htm</guid></item><item><title>Souviens toi, souviens toi de ce 5 de Novembre…</title><link>http://michael.carbenay.info/post-405.htm</link><pubDate>Tue, 17 Feb 2009 10:24:59 GMT</pubDate><description><![CDATA[<div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c5fb8953-66d0-49e0-898a-1c5ab8898e21" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><div id="e1f17439-c778-4fa8-a516-c7ccdc0f3653" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=c6Q0dfrbr10" target="_new"><img src="http://files.blog-engine.net/1/42279.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e1f17439-c778-4fa8-a516-c7ccdc0f3653'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/c6Q0dfrbr10&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/c6Q0dfrbr10&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div></div></div>]]></description><guid>http://michael.carbenay.info/post-405.htm</guid></item><item><title>WPF : Vos popups / comboboxes n’apparaissent pas sous Windows XP ?</title><link>http://michael.carbenay.info/post-404.htm</link><pubDate>Mon, 16 Feb 2009 18:09:18 GMT</pubDate><description><![CDATA[<p>Un bug très très étrange, avec un symptôme déjà rencontré mais pour une raison totalement différente, nous embêtais depuis quelques semaines chez l’un de nos clients : les popups (menu, combobox, etc.) n’apparaissaient pas sur l’un des postes… </p>  <p>Après pas mal de recherche, il est apparu que les popups s’affichaient bien, mais en dessous de la fenêtre principale ! Pas très évident à expliquer et encore moins à corriger :)</p>  <p>Eh bien, si, en fait, il s’agit d’un bug connu : <a title="http://support.microsoft.com/kb/943326/en-us" href="http://support.microsoft.com/kb/943326/en-us">http://support.microsoft.com/kb/943326/en-us</a></p>  <p>Je vais de ce pas installer le correctif !</p>]]></description><guid>http://michael.carbenay.info/post-404.htm</guid></item><item><title>WPF et les palettes de couleurs deuxième prise !</title><link>http://michael.carbenay.info/post-403.htm</link><pubDate>Fri, 06 Feb 2009 22:55:49 GMT</pubDate><description><![CDATA[<p>Bon… en regardant un peu sur le web si d’autres personnes parlaient de COLOURlovers et WPF, je suis tombé sur ce <a href="http://www.technode.info/2008/12/kuler-sincruste-dans-blend-et-design.html">post chez technode parlant du plug-in Colorful pour Blend &amp; Design</a>. Du coup, forcément, il ne me reste plus qu’à essayer… Pour résumer, il s’agit d’un add-in qui ajoute (dans Expression Blend &amp; Design donc), l’accès aux ressources de palettes proposées sur <a href="http://kuler.adobe.com/">Adobe Kuler</a>.</p>  <p style="text-align: center"><a href="http://files.blog-engine.net/1/35271.jpg"><img title="ColorfulExpressionDesign" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="584" alt="ColorfulExpressionDesign" src="http://files.blog-engine.net/1/11936.jpg" width="500" border="0" /></a> </p>  <p>Pour trouver le <a href="http://www.codeplex.com/colorful">plug-in et essayer par vous même, ça se passe sur codeplex</a>.</p>  <p>Ah… oui, et si vous ne connaissiez pas <a href="http://www.technode.info/">Technode</a>, faites comme moi et mettez le dans votre aggrégateur rss :)</p>]]></description><guid>http://michael.carbenay.info/post-403.htm</guid></item></channel></rss>