<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Blogs Bewise</title>
    <link>www.bewise.fr/BewiseApps/blogs.ashx</link>
    <description>Blogs Bewise</description>
    <item>
      <guid isPermaLink="false">70</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/Vpbsav9rkr8/techdays-2012-ou-lrsquoanneacutee-des-12-sessions-sharepoint-20120202-70.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>Techdays 2012 ou l’année des 12 sessions SharePoint</title>
      <description>&lt;p&gt;Cette Année SharePoint tiens encore une place importante aux Techdays. Pas moins de 12 Sessions ! &lt;a href="http://blogs.msdn.com/b/sharepointfrance/archive/2012/01/30/sharepoint-une-place-d-honneur-aux-techdays-2012-mstechdays.aspx" target="_blank"&gt;Retrouvez ici&lt;/a&gt; un détail complet. Bien sûr vous devez privilégier &lt;a href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#SessionID=7ae20379-9c2c-4303-b309-938431428fc0&amp;amp;fbid=tT72wxFA09Q" target="_blank"&gt;ma session&lt;/a&gt; &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&amp;#39;œil" src="http://www.paslatek.net/Attachments.ashx?id=131" /&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 02 Feb 2012 15:02:28 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2012-02-02T15:02:28+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/techdays-2012-ou-lrsquoanneacutee-des-12-sessions-sharepoint-20120202-70.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">69</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/irRv_8CVm4I/rejoignez-moi-aux-techdaysrsquo12-20120127-69.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>Rejoignez moi aux Techdays’12</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://www.paslatek.net/Attachments.ashx?id=129" width="233" height="89" /&gt;Information de dernière minute ! Je serais finalement speaker aux Techdays de cette année ! Bien sûr le sujet est SharePoint. Cette année on va la jouer “gentil” et donc pas de Dev ! juste une bonne session de découverte sur les aspect GED de SharePoint 2010.     &lt;br /&gt;---&amp;gt;&amp;#160; &lt;a href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#SessionID=7ae20379-9c2c-4303-b309-938431428fc0&amp;amp;fbid=tT72wxFA09Q" target="_blank"&gt;&lt;strong&gt;Le détail ici&lt;/strong&gt;&lt;/a&gt; &amp;lt;--- .     &lt;br /&gt;Je serais aussi présent aux stands “Ask the expert” sur la partie “efficacité individuelle et collective” le Mardi 7 et Mercredi 8 février. N’hésitez pas à venir me passer un p’tit bonjour &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&amp;#39;œil" src="http://www.paslatek.net/Attachments.ashx?id=130" /&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 27 Jan 2012 13:56:35 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-27T13:56:35+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/rejoignez-moi-aux-techdaysrsquo12-20120127-69.aspx</origLink>
    </item>
    <item>
      <title>techdays 2012 – Fast and Furious XAML Apps!</title>
      <link>http://blogs.developpeur.org/vko/archive/2012/01/24/techdays-2012-fast-and-furious-xaml-apps.aspx</link>
      <pubDate>Tue, 24 Jan 2012 07:45:27 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:51815</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/51815.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=51815</commentRss>
      <description>
  Une session indispensable pour tous les développeurs d’application XAML (WP7, SL, WPF et WinRT) qui en ont marre d’entendre leur client dire “c’est mou” et qui aimeraient développer des applications fluides, rapides et réactives !              “Pour l...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=51815" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">68</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/2YFKR2c8tX8/mvp-sharepoint-server-20120102-68.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>MVP SharePoint Server</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="Microsoft_MVP_logo" border="0" alt="Microsoft_MVP_logo" align="left" src="http://www.paslatek.net/Attachments.ashx?id=128" width="64" height="98" /&gt;Pour bien commencer l’année j’ai eu le grand plaisir et honneur d’être nommé MVP ( c’est une première pour moi ! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sourire" src="http://www.paslatek.net/Attachments.ashx?id=127" /&gt; ) et ceci pour récompenser mes diverses participations au sein de la communauté, française, SharePoint Server. Bien sûr je vais faire en sorte de bien défendre ce titre tout au long de l’année en continuant à partager au maximum mes trucs, astuces, retours d’expériences, etc. sur ce blog. Donc comme on dit : “Stay Tuned !”&lt;/p&gt;</description>
      <pubDate>Mon, 02 Jan 2012 16:01:39 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-02T16:01:39+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/mvp-sharepoint-server-20120102-68.aspx</origLink>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Retour-aux-sources_A2AC/image_5.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Retour-aux-sources_A2AC/image_thumb_1.png" width="369" height="247" />
          </a>
        </p>
        <p>
Si vous aussi vous rechercher une solution pour effectuer des recherches dans les
fichiers de code source de TFS, <a href="http://labs.bewise.fr/Article/Indexer-les-sources-d-un-serveur-TFS/">voici
un article qui devrait vous intéresser</a>.
</p>
        <p>
Dans cet article, nous mettons en place une solution d’indexation des source TFS basée
sur la recherche Full Text de SQL Server et Team Build.
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5" />
      </body>
      <title>Retour aux Sources…</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5.aspx</guid>
      <link>http://benoitlaut.net/2011/12/23/RetourAuxSources.aspx</link>
      <pubDate>Fri, 23 Dec 2011 10:37:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Retour-aux-sources_A2AC/image_5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Retour-aux-sources_A2AC/image_thumb_1.png" width="369" height="247"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Si vous aussi vous rechercher une solution pour effectuer des recherches dans les
fichiers de code source de TFS, &lt;a href="http://labs.bewise.fr/Article/Indexer-les-sources-d-un-serveur-TFS/"&gt;voici
un article qui devrait vous intéresser&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Dans cet article, nous mettons en place une solution d’indexation des source TFS basée
sur la recherche Full Text de SQL Server et Team Build.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,43ca7767-ef9d-4d5c-87d0-7eb30fb8e2b5.aspx</comments>
      <category>TFS</category>
    </item>
    <item>
      <title>Support Windows Phone 7 Nokia Roadshow</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/12/06/support-windows-phone-7-nokia-roadshow.aspx</link>
      <pubDate>Tue, 06 Dec 2011 07:59:47 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:51708</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/51708.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=51708</commentRss>
      <description>
  Comme promis à ceux qui ont participé à cette journée de training intense, je met à votre disposition les slides et les démo que j’ai utilisé lors du WP7 Nokia Road Show à Toulouse et Bordeaux.  Télécharger les slides  Merci encore à ceux qui ont part...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=51708" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">67</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/et5TjMAkzZo/la-reacuteussite-de-vos-projets-sharepoint-passe-par-une-inteacutegration-continue-20111121-67.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>La réussite de vos projets SharePoint passe par une intégration continue</title>
      <description>&lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline; float: left" alt="" align="left" src="http://images.discountasp.net/tfs-newsletter/2011-06/tfsBuildlogo.png" width="82" height="82" /&gt;Connaissez-vous l'intégration continue ? Avez-vous des doutes sur ses intérêts et avantages ? Je ne chercherais pas à répondre à ces questions dans cet article car vous en trouverez certainement des dizaines voire même des centaines bien plus pertinents que le mien. Malgré tout, afin de planter un minimum le décor, voici pour faire simple la définition de Wikipédia :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://fr.wikipedia.org/wiki/Int%C3%A9gration_continue"&gt;« L'intégration continue est un ensemble de pratiques utilisées en génie logiciel. Elles consistent à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression de l'application en cours de développement. »&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Par contre, une fois que vous aurez fait ces recherches, je ne doute pas que vous soyez au moins autant convaincu que moi. Alors peut-être à ce moment vous vous demanderez : « Comment mettre en place ce type de processus d'intégration continue avec des projets SharePoint ? ». Dans ce cas, cet article est pour vous !&lt;/p&gt;  &lt;p&gt;Je vais vous guider sur les outils à utiliser et comment les utiliser pour mettre en place une compilation, un déploiement et des tests, tout ceci de manière automatique, pour vos projets dédiés à la plateforme SharePoint 2010.&lt;/p&gt;  &lt;p&gt;Ce processus fera appel à la plateforme Team Foundation Server, en particulier l'aspect &amp;quot;Build&amp;quot; automatique permettant de séquencer un ensemble d'actions telles que « compilation », « exécution de processus externe », « création de WorkItems », « exécution de tests unitaires ».&lt;/p&gt;  &lt;p&gt;Retrouvez l’article complet sur &lt;a href="http://labs.bewise.fr" target="_blank"&gt;labs.bewise.fr&lt;/a&gt; : &lt;a href="http://labs.bewise.fr/Article/La-reussite-de-vos-projets-SharePoint-passe-par-une-integration-continue--Part-1-2-/" target="_blank"&gt;&lt;strong&gt;Partie 1&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; et &lt;/strong&gt;&lt;a href="http://labs.bewise.fr/Article/la-r%C3%A9ussite-de-vos-projets-sharepoint-passe-par-une-int%C3%A9gration-continue-part-2-2/" target="_blank"&gt;&lt;strong&gt;Partie 2&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 21 Nov 2011 11:53:37 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-21T11:53:37+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/la-reacuteussite-de-vos-projets-sharepoint-passe-par-une-inteacutegration-continue-20111121-67.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">66</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/zcEISsTvkmY/le-getter-de-la-mort-20111118-66.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>Le getter de la mort</title>
      <description>&lt;p&gt;Nous utilisons très souvent des propriétés public sur des classes, que ce soit en get ou set. SharePoint et son SDK ni manque pas non plus. Cependant méfiez vous de certains pièges où on pense que le getter ne renvoi qu’une variable interne ! ce n’est pas toujours vrai ! Le getter peu faire beaucoup de chose avant de vous renvoyer le résultat… Les performances de votre application peuvent donc en pâtir, mais vous pouvez carrément avoir des “bugs”. Un bon exemple avec le SPWeb.RootFolder :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Scénario : &lt;/strong&gt;Vous devez modifier la WelcomePage d’un SPWeb par code. Par défaut on aurait tendance à faire ça :&lt;/p&gt;  &lt;p&gt;SPWeb w = ….. // je ne m’attarde pas sur la récupération du SPWeb&lt;/p&gt;  &lt;p&gt;w.RootFolder.WelcomePage = “toto.aspx”&lt;/p&gt;  &lt;p&gt;w.RootFolder.Update();&lt;/p&gt;  &lt;p&gt;Comme beaucoup de classes dans le SDK de SharePoint, il faut appeler la méthode Update pour valider la mise à jour. Mais il se trouve que ça ne marche pas ! (pas de plantage mais la page d’accueil ne sera pas changée) pourquoi ? Regardons l’implémentation de RootFolder avec Reflector :&lt;/p&gt;  &lt;p&gt;public &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.SharePoint:14.0.0.0:71e9bce111e9429c/Microsoft.SharePoint.SPFolder"&gt;SPFolder&lt;/a&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.SharePoint:14.0.0.0:71e9bce111e9429c/Microsoft.SharePoint.SPWeb/property:RootFolder:Microsoft.SharePoint.SPFolder"&gt;RootFolder&lt;/a&gt;&lt;/b&gt; { get { return new &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.SharePoint:14.0.0.0:71e9bce111e9429c/Microsoft.SharePoint.SPFolder/.ctor(Microsoft.SharePoint.SPWeb,String)"&gt;SPFolder&lt;/a&gt;(this, &amp;quot;&amp;quot;); } }&lt;/p&gt;  &lt;p&gt;Et oui ! une nouvelle instance à chaque fois ! du coup l’appel à Update n’est pas fait sur la même instance de SPFolder et on perd donc la modification de la WelcomePage. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution&amp;#160; : &lt;/strong&gt;Dans ce cas il faut faire ça :&lt;/p&gt;  &lt;p&gt;SPFolder f = w.RootFolder;&lt;/p&gt;  &lt;p&gt;f.WelcomePage = “toto.aspx”&lt;/p&gt;  &lt;p&gt;f.Update();&lt;/p&gt;  &lt;p&gt;Et le tour est joué !&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conclusion :&lt;/strong&gt; ne soyons pas trop flemmard à déclarer des variables intermédiaires…&lt;/p&gt;</description>
      <pubDate>Fri, 18 Nov 2011 08:31:28 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-18T08:31:28+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/le-getter-de-la-mort-20111118-66.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">65</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/G_-hZxR5atQ/problegraveme-sur-le-cumulative-update-octobre-pour-moss-2007-sp3-20111104-65.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>Problème sur le Cumulative Update Octobre pour MOSS 2007 SP3</title>
      <description>&lt;p&gt;Attention à ceux qui souhaiterais installer le CU d’octobre sur un MOSS 2007 ! si votre Moss est déjà en SP3 ça ne sera pas possible !… &lt;a title="http://blogs.technet.com/b/stefan_gossner/archive/2011/10/29/be-careful-when-planning-to-install-moss-2007-october-2011-cu-and-service-pack-3.aspx" href="http://blogs.technet.com/b/stefan_gossner/archive/2011/10/29/be-careful-when-planning-to-install-moss-2007-october-2011-cu-and-service-pack-3.aspx"&gt;http://blogs.technet.com/b/stefan_gossner/archive/2011/10/29/be-careful-when-planning-to-install-moss-2007-october-2011-cu-and-service-pack-3.aspx&lt;/a&gt;. Il semble qu’il faille installer ce CU avant le SP3. Et pour ceux qui ont déjà le SP3 … pas de solution ?&lt;/p&gt;</description>
      <pubDate>Fri, 04 Nov 2011 09:27:52 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-04T09:27:52+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/problegraveme-sur-le-cumulative-update-octobre-pour-moss-2007-sp3-20111104-65.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">64</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/TFeSNG941ok/spcontext-et-spservicecontext-dans-le-mauvais-contexte-ou-le-piegravege-du-singleton-masqueacute-20111102-64.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>SPContext et SPServiceContext dans le mauvais Contexte ou le piège du singleton masqué</title>
      <description>&lt;p&gt;Sous couvert de ce titre en jeux de mots je souhaite vous parler d’un sujet inspiré de deux problèmes rencontrés avec du code pour SharePoint.    &lt;br /&gt;&lt;em&gt;(EDIT 18/11/2011 : J’ai modifié mon code car j’utilisais le Thread.CurrentPrincipal pour assigner le User du HttpContext. Dans le cas d’une application console, ce CurrentPrincipal est “vide”. J’ai donc corrigé pour utiliser “new WindowsPrincipal(WindowsIdentity.GetCurrent())” à la place)&lt;/em&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;1 - L’erreur de départ&lt;/h3&gt;  &lt;p&gt;Concrètement ces deux “erreurs” apparaissent dans un contexte particulier qui est celui d’une application Windows (batch, powershell, client lourd) utilisant le SDK de SharePoint :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1er cas&lt;/strong&gt; : c’est la cas “facile”. En tentant de construire une instance de UserProfileManager vous utilisez la ligne de code suivante :&lt;/p&gt;  &lt;p&gt;UserProfileManager mana = new UserProfileManager(SPServiceContext.Current);&lt;/p&gt;  &lt;p&gt;et vous obtenez l’exception suivante :&lt;/p&gt;  &lt;p&gt;&lt;em&gt;System.ArgumentNullException : Value cannot be null. Parameter name: serviceContext&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;at Microsoft.Office.Server.UserProfiles.ProfileManagerBase..ctor(SPServiceContext serviceContext)      &lt;br /&gt;at Microsoft.Office.Server.UserProfiles.ProfileManagerBase..ctor(SPServiceContext serviceContext, Boolean ignorePrivacy)       &lt;br /&gt;at Microsoft.Office.Server.UserProfiles.UserProfileManager..ctor(SPServiceContext serviceContext, Boolean IgnoreUserPrivacy, Boolean backwardCompatible)       &lt;br /&gt;at Microsoft.Office.Server.UserProfiles.UserProfileManager..ctor(SPServiceContext serviceContext, Boolean IgnoreUserPrivacy)       &lt;br /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2nd cas :&lt;/strong&gt; c’est la cas “vicieux”. En utilisant un SPLimitedWebPartManager pour modifier ou consulter les propriétés de webparts, en particulier des ContentByQueryWebPart ayant des XSLT customs attachés (ItemXslLink et/ou MainXslLink) vous récupérez uniquement des Microsoft.SharePoint.WebPartPages.ErrorWebPart avec comme erreur par exemple : &lt;/p&gt;  &lt;p&gt;&lt;em&gt;An error occurred while setting the value of this property: Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart:ItemXslLink - Exception has been thrown by the target of an invocation.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;2 – L’analyse&lt;/h3&gt;  &lt;p&gt;Alors bien sûr vous vous en doutez, la raison est globalement la même, il s’agit du context qui est mal initialisé car nous sommes dans un contexte client lourd et pas application web, c’est logique…&lt;/p&gt;  &lt;p&gt;Mais quel contexte ? SPServiceContext, SPContext, HttpContext ? &lt;/p&gt;  &lt;p&gt;Et puis d’abord comme ça se fait que le singleton SPContext.Current ne se débrouille pas tout seul pour être correctement construit&amp;#160; ?!&lt;/p&gt;  &lt;p&gt;Instinctivement j’aurais tendance à dire que le SPServiceContext.Current utilise le SPContext.Current qui à son tour utilise le HttpContext.Current. Vérifions avec une bonne vielle décompilation :&lt;/p&gt;  &lt;p&gt;SPServiceContexT.Current:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1cd63ed7-628c-4de4-9976-0a5c0ebce446" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public static SPServiceContext Current 
{ 
    get 
    { 
        SPServiceContextScope currentScope = SPServiceContextScope.CurrentScope; 
        if (currentScope != null) 
        { 
            return currentScope.Context; 
        } 
        return GetContext(HttpContext.Current); 
    } 
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;et SPContext.Current :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ba2cb0f1-4b4a-4b91-a150-b729910be0c5" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public static SPContext Current 
{ 
    get 
    { 
        SPContext context = null; 
        if (HttpContext.Current != null) 
        { 
            try 
            { 
                if (SPControl.GetContextWeb(HttpContext.Current) == null) 
                { 
                    return null; 
                } 
            } 
            catch (InvalidOperationException) 
            { 
                return null; 
            } 
            try 
            { 
                context = GetContext(HttpContext.Current); 
            } 
            catch (FileNotFoundException) 
            { 
            } 
            catch (InvalidOperationException) 
            { 
            } 
        } 
        return context; 
    } 
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;On constate que dans les deux cas il faut que le HttpContext.Current soit initialisé. Sur la cas du SPContext c’est d’autant plus flagrant qu’un premier test vérifie que le HttpContext fourni n’est pas null.&lt;/p&gt;

&lt;p&gt;Du coup cette imbrication de propriétés, toutes statiques, masquent un peu un besoin nécessaire au bon fonctionnement des classes du SDK : un contexte d’application web, donc une requête http sur une url. Quelque part cela ne me “choque pas” sur le principe que SharePoint est avant tout utilisé dans un contexte web. Donc l’utiliser dans un autre contexte peut nécessiter des actions supplémentaires. Ce qui me gène c’est que dans certains cas, l’utilisation du SPContext est faite en interne par le biais d’autres classes et méthodes et dans mon cas la remontée d’erreur n’est pas forcement très explicite. &lt;/p&gt;

&lt;p&gt;Par exemple ma seconde erreur est due au fait que j’utilise un ContentByQueryWebPart qui lui même hérite d’un CmsDataFormWebPart qui notamment dans le cas du setter de certaines propriétés (comme celle concernant le Xsl) appelle une méthode nommée MakeSiteRelativeUrl.&lt;/p&gt;

&lt;p&gt;Que fait cette méthode ? Je vous le donne en mille :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:3fe76192-bca6-48a9-a855-985a9335ba26" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;private static string MakeSiteRelativeUrl(string xslServerRelativeUrl) 
{ 
    string serverRelativeUrl = SPContext.Current.Site.ServerRelativeUrl; 
...
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Et évidement si je n’ai pas de HttpContext, je n’ai pas non plus de SPContext, et donc pas de Site et encore moins de ServerRelativeUrl.&lt;/p&gt;

&lt;p&gt;Et pour finir, lors de l’analyse de la page par le SPLimitedWebPartManager, le webpart est chargé comme si il était rendu dans la page web, donc le XslLink est fixé lors du CreateChildControl et donc en cascade la fameuse méthode est appelée, elle plante, SharePoint prends ça en charge et remplace le webpart par un ErrorWebPart…&lt;/p&gt;

&lt;h3&gt;3 – La résolution&lt;/h3&gt;

&lt;p&gt;La solution est simple me diriez vous ! Il suffit d’instancier un HttpContext dans le cas d’une application qui ne tournera pas en application web ! Ok très bien allons y. Pour instancier un HttpContext il nous faut une HttpRequest qui a besoin d’une url et d’une HttpResponse.&lt;/p&gt;

&lt;p&gt;Concernant l’url il me semble judicieux de fournir celle du SPWeb que l’on souhaite ouvrir ou du SPFile par exemple, je rajoute donc la ligne suivante juste après l’ouverture d’un SPWeb nommé web :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:35325513-b5dd-4130-a2cc-5eb6af2b145e" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;HttpContext.Current = new HttpContext(new HttpRequest("", web.Url, ""), new HttpResponse(new StringWriter()));&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Et malheureusement ça ne suffit pas !&lt;/p&gt;

&lt;p&gt;Et pour comprendre pourquoi le mieux et de retourner voir le code de la propriété SPContext.Current, en particulier la méthode SPControl.GetContextWeb :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:be07282d-48a4-42ea-b6bc-ab1c56d24538" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;private static SPWeb SPWebEnsureSPControl(HttpContext context) 
{ 
   SPWeb web = (SPWeb) context.Items["HttpHandlerSPWeb"]; 
    if ((web == null) &amp;amp;&amp;amp; (context.Items["HttpHandlerSPSiteNotFound"] == null)) 
    { 
        if (context.User == null) 
        { 
            context.Items["HttpHandlerSPSiteNotFound"] = "1"; 
            throw new InvalidOperationException(); 
        } 
        if (SPSecurity.ImpersonatingSelf || SPSecurity.RunAsUserInProgress) 
        { 
            throw new InvalidOperationException(); 
        } 
        try 
        { 
            SPSite site; 
            context.Items["HttpHandlerSPSite"] = site = SPSiteFromContextNoCache(); 
            if (site == null) 
            { 
                context.Items["HttpHandlerSPSiteNotFound"] = "1"; 
                return null; 
            } 
            web = site.OpenWeb(); 
            context.Items["HttpHandlerSPWeb"] = web; 
            if (!SPRequestUsageMonitoredScope.s_FirstBrowseHasOccured) 
            { 
                SPRequestUsageMonitoredScope.s_FirstBrowseHasOccured = true; 
            } 
            if (SPSecurity.ApplicationPrincipal == null) 
            { 
                site.InitUserToken(EnsureSPWebRequest(web)); 
            } 
            else 
            { 
                site.InitUserToken(null); 
            } 
            SPRequestModule.InitContextWeb(context, web); 
            if (SPContext.GetShouldInitThreadCultureWhenContextWebIsInited(context)) 
            { 
                web.SetThreadCultureAfterInit(); 
            } 
            ULS.CorrelationAdd("Site", site.ServerRelativeUrl); 
        } 
        catch (FileNotFoundException) 
        { 
            context.Items["HttpHandlerSPSiteNotFound"] = "1"; 
        } 
    } 
    return web; 
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;A mon sens il y a dans cette méthode deux choses importantes à ne pas louper :&lt;/p&gt;

&lt;p&gt;1- on essai d’abord de récupérer un SPWeb à partir d’un Item du HttpContext nommé “HttpHandlerSPWeb”&lt;/p&gt;

&lt;p&gt;2- si cet SPWeb n’est pas présent, on tente de le créer, mais à condition notamment d’avoir un User sur le HttpContext courant. A défaut on recevra une InvalidOperationException.&lt;/p&gt;

&lt;p&gt;le SPWeb quand à lui sera crée à partir du SPSite crée lui même à partir d’une méthode SPSiteFromContextNoCache qui au final va chercher une url dans le HttpContext sous l’Item “Microsoft.SharePoint.Administrtion.ContextUri&amp;quot;, qui dans notre cas n’est très probablement pas renseignée.&lt;/p&gt;

&lt;p&gt;Je vais donc rajouter deux lignes de codes supplémentaire juste après l’ouverture de mon SPWeb pour initialiser correctement le HttpContext:&lt;/p&gt;

&lt;p&gt;Pour être sûr que le SPWeb puisse être construit dans le SPContext :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5ea59d5f-6084-4d86-a411-ba94b7696c3c" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;HttpContext.Current.User =  new WindowsPrincipal(WindowsIdentity.GetCurrent()); &lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Tant qu’à faire, ayant déjà un SPWeb sous la main, pour gagner du temps :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:da1e4571-ff7d-4181-b3ce-99b1aa167d9e" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;HttpContext.Current.Items["HttpHandlerSPWeb"] = web;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Bien sûr cela n’est pas du tout conseillé dans un contexte web, donc à ne &lt;strong&gt;PAS&lt;/strong&gt; &lt;strong&gt;faire systématiquement&lt;/strong&gt;, mais bien dans le cas précis d’une application qui est exécutée sur le serveur, avec une identité “choisie”.&lt;/p&gt;

&lt;p&gt;Avec ces 3 lignes de codes, mon application console fonctionne à merveille !&lt;/p&gt;

&lt;p&gt;Pour me simplifier un peu la vie, j’ai crée quelques extensions de méthodes :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:52bf6383-8d61-44d0-94bd-d1e0ab6705ce" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public static class SPSiteExtensions
{
	public static void EnsureContext(this SPSite site)
	{
	    if (HttpContext.Current == null)
	    {
	        HttpContext.Current = new HttpContext(new HttpRequest("", site.Url, ""), new HttpResponse(new StringWriter()));
	        //en principe suffisant
	        HttpContext.Current.User =  new WindowsPrincipal(WindowsIdentity.GetCurrent());
	    }
	}
}
public static class SPWebExtensions
{
    public static void EnsureContext(this SPWeb web)
    {
        if (HttpContext.Current == null)
        {
            HttpContext.Current = new HttpContext(new HttpRequest("", web.Url, ""), new HttpResponse(new StringWriter()));
            //en principe suffisant
            HttpContext.Current.User =  new WindowsPrincipal(WindowsIdentity.GetCurrent());
            //pour gagner du temps
            HttpContext.Current.Items["HttpHandlerSPWeb"] = web;
        }
    }
    public static SPWeb OpenWeb(this SPSite site,bool loadHttpContext)
    {
        SPWeb w = site.OpenWeb();
        if (w == null) return null;
        w.EnsureContext();
        return w;
    }
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Et l’utilisation est du coup assez simple :&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a5bccc4b-26b6-4777-92f1-56ed52b47662" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;static void Main(string[] args)
{
    string url = "http://root.paslatek.com/SitePages/testCQWP.aspx";
    using (SPSite site = new SPSite(url))
    {
        //première façon de faire si on va pas plus loin que le SPSite
        site.EnsureContext();
   //ouverture SPWeb avec la metode d'extension
        using (SPWeb web = site.OpenWeb(true))
        {

            //autre manière d'assurer le context avec le SPWeb
            web.EnsureContext();
           ////test 1
            UserProfileManager mana = new UserProfileManager(SPServiceContext.Current, true);
            foreach (UserProfile u in mana)
                Console.WriteLine(u.DisplayName);
            //test 2
            SPFile f = web.GetFile(url);
            var wpMana = f.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
            foreach (System.Web.UI.WebControls.WebParts.WebPart wp in wpMana.WebParts)
                Console.WriteLine(wp.GetType().ToString());
        }
    }
}&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;4 – La conclusion&lt;/h3&gt;

&lt;p&gt;Le SPContext.Current c’est le mal ? Il ne faut pas l’utiliser ? &lt;/p&gt;

&lt;p&gt;De manière générale j’ai envie de dire oui, pour vous éviter ce genre de cas tordu où par un enchainement d’appels, à travers un tas de classes, vous arriviez sur un cas identique au mien. En effet dans mon cas, les codes utilisant le UserProfileManager et du SPLimitedWebPartManager étaient dans le un FeatureReceiver, à l’activation de la feature. Ce code à très bien fonctionné tant qu’on activait la feature par l’interface web. Jusqu’au jour où j’ai eu besoin d’utiliser une application console qui parcourais un bon millier de sites et activait la feature en question de manière automatique. E là c’est le drame !&lt;/p&gt;

&lt;p&gt;Mais au final de toute façon tout cela ne dépends pas que de vous, puisque comme nous l’avons vu, certains composants de ce, riche, Framework qu’est SharePoint utilisent eux mêmes le SPContext. De plus j’ai rencontré ici deux cas particuliers, mais rien ne dit que vous ne tomberez pas sur un autre problème dont la source est la même sur d’autres webparts par exemple. Donc vous n’y pourrez pas grand chose d’autre que d’utiliser un contournement comme celui que je vous ai proposé dans cet article.&lt;/p&gt;

&lt;p&gt;Ce qui est marrant c’est que &lt;a href="http://msdn.microsoft.com/en-us/library/ms468609.aspx" target="_blank"&gt;la documentation MSDN&lt;/a&gt; est assez claire sur le sujet, entre autre parce qu'elle dit bien que le SPContext n’a pas de sens dans le cas d’une application console…&lt;/p&gt;

&lt;p&gt;Merci aussi à SanDeep pour &lt;a href="http://sharepoint-insight.blogspot.com/2008/10/sharepoint-all-webparts-appear-as.html" target="_blank"&gt;son article sur le SPLimitedWebPartManager et la création du HttpContext&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 02 Nov 2011 09:13:13 +0100</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-02T09:13:13+01:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/spcontext-et-spservicecontext-dans-le-mauvais-contexte-ou-le-piegravege-du-singleton-masqueacute-20111102-64.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">63</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/tg0gaYexSP0/sharepoint-2007-service-pack-3-20111021-63.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>SharePoint 2007 Service Pack 3</title>
      <description>&lt;p&gt;Pour ceux qui ne sont pas encore passé à SharePoint 2010 &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&amp;#39;œil" src="http://www.paslatek.net/Attachments.ashx?id=125" /&gt;, MS viens d’annoncer la sortie très prochaine d’un SP3 pour Office 2007 et SharePoint 2007: &lt;a href="http://blogs.technet.com/b/office_sustained_engineering/archive/2011/10/06/announcing-service-pack-3-for-office-2007-and-sharepoint-server-2007.aspx"&gt;http://blogs.technet.com/b/office_sustained_engineering/archive/2011/10/06/announcing-service-pack-3-for-office-2007-and-sharepoint-server-2007.aspx&lt;/a&gt;. La date officielle n’est pas encore donnée, mais ça ce fera courant dernier trimestre 2011. Attention, SharePoint 2007 ne sera plus “supporté” par MS à partir du mois d’Avril 2012, une raison de plus de penser migration vers 2010 &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&amp;#39;œil" src="http://www.paslatek.net/Attachments.ashx?id=125" /&gt; …&lt;/p&gt;</description>
      <pubDate>Fri, 21 Oct 2011 14:16:55 +0200</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-10-21T14:16:55+02:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/sharepoint-2007-service-pack-3-20111021-63.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">62</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/leH6HmC0PlM/outil-drsquoaide-agrave-lrsquoeacutecriture-de-commande-powershell-pour-microsoft-windows-powershell-command-builderquot-20111020-62.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>Outil d’aide à l’écriture de commande powershell pour Microsoft (Windows PowerShell Command builder")</title>
      <description>&lt;p&gt;Un outil bien sympa en Silverlight qui vous aidera à découvrir/écrire vos batch PowerShell pour SharePoint 2010. Rappelez vous, &lt;a href="http://www.paslatek.net/sharepoint-2010-amegravene-531-commandes-powershell-20100416-32.aspx"&gt;plus de 500 cmdlets&lt;/a&gt; sont dispos depuis cette nouvelle version de SharePoint ! Donc un outil joli, ergonomique, qui nous guide, c’est une très bonne initiative.&amp;#160; Le descriptif de l’outil (en Anglais) se trouve ici : &lt;a title="http://technet.microsoft.com/en-us/sharepoint/ff603532.aspx" href="http://technet.microsoft.com/en-us/sharepoint/ff603532.aspx"&gt;http://technet.microsoft.com/en-us/sharepoint/ff603532.aspx&lt;/a&gt; et l’accès direct à l’outil ici : &lt;a title="Windows PowerShell Command Builder" href="http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html"&gt;Windows PowerShell Command Builder&lt;/a&gt;. Enjoy !     &lt;br /&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.paslatek.net/Attachments.ashx?id=124" width="517" height="254" /&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 20 Oct 2011 11:27:05 +0200</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-10-20T11:27:05+02:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/outil-drsquoaide-agrave-lrsquoeacutecriture-de-commande-powershell-pour-microsoft-windows-powershell-command-builderquot-20111020-62.aspx</origLink>
    </item>
    <item>
      <guid isPermaLink="false">60</guid>
      <link>http://feedproxy.google.com/~r/PaslatekBlog/~3/9qo7XEwHF9c/cafouillage-windows-update-et-serveur-sharepoint-20111020-60.aspx</link>
      <author>lionel.limozin@bewise.fr</author>
      <title>Cafouillage Windows Update et Serveur SharePoint</title>
      <description>&lt;p&gt;Je viens de me rendre compte que j’avais relayé l’info sur mon &lt;a href="https://plus.google.com/100380826002033971868" target="_blank"&gt;google+&lt;/a&gt; mais pas sur mon blog:&amp;#160; MS à publié une série de hotfix de sécurité qui impacte SHP 2007 et 2010 !     &lt;br /&gt;Sauf &lt;strong&gt;qu’un seul&lt;/strong&gt; des 7 hotfix est poussé automatiquement par windows Update ! et ce hotfix ne fonctionnera pas car des dépendances ne seront pas installées car il faut mettre tous les hotfixs en même temps !!! : &lt;a title="http://blogs.technet.com/b/stefan_gossner/archive/2011/09/19/update-on-september-security-bulletin-ms11-074-and-sharepoint-2010-issues.aspx" href="http://blogs.technet.com/b/stefan_gossner/archive/2011/09/19/update-on-september-security-bulletin-ms11-074-and-sharepoint-2010-issues.aspx"&gt;http://blogs.technet.com/b/stefan_gossner/archive/2011/09/19/update-on-september-security-bulletin-ms11-074-and-sharepoint-2010-issues.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Les symptômes :    &lt;br /&gt;- Site de publications en erreurs : &lt;em&gt;Method not found: 'Void Microsoft.Office.Server.WebControls.AudienceLoader.GetAudiencesFetchedDuringPageRequest(System.Collections.Generic.Dictionary`2&amp;lt;System.Guid,Boolean&amp;gt; ByRef, System.Collections.Generic.Dictionary`2&amp;lt;System.String,Boolean&amp;gt; ByRef, System.Collections.Generic.Dictionary`2&amp;lt;System.String,Boolean&amp;gt; ByRef)'.&lt;/em&gt;     &lt;br /&gt;- Application de Synchro de profils en erreur ‘FileNotFound’ : S&lt;em&gt;ystem.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.ResourceManagement, Version=4.0.2450.34, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.&amp;#160;&amp;#160;&amp;#160; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager.InitializeIlmClient(String ILMMachineName, Int32 FIMWebClientTimeOut)&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager..ctor(UserProfileApplicationProxy userProfileApplicationProxy, Guid partitionID)&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Microsoft.SharePoint.Portal.UserProfiles.AdminUI.ProfileAdminPage.IsProfileSynchronizationRunning()&amp;#160;&amp;#160;&amp;#160; &lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 20 Oct 2011 11:04:05 +0200</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-10-20T11:04:05+02:00</updated>
      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://www.paslatek.net/cafouillage-windows-update-et-serveur-sharepoint-20111020-60.aspx</origLink>
    </item>
    <item>
      <title>Un contrôle Bing Maps pour WPF !!!</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/08/24/un-contr-le-bing-maps-pour-wpf.aspx</link>
      <pubDate>Wed, 24 Aug 2011 17:18:12 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:51325</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">6</comments>
      <comments>http://blogs.developpeur.org/vko/comments/51325.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=51325</commentRss>
      <description>
  Les équipes MS viennent de sortir un contrôle Bing Maps en WPF, 100% WPF !!   Terminées les galères du WebBrowser qui embarque une application Silverlight, les problèmes de superposition, les bidouille d’interop et COM pour faire dialoguer tout ce bea...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=51325" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-3387503874211231055</guid>
      <pubDate>Tue, 23 Aug 2011 14:39:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-23T16:45:01.441+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">Windows Phone</category>
      <category domain="http://www.blogger.com/atom/ns#">Silverlight</category>
      <title>WP7 : “Unspecified error” lorsqu’on modifie un template, depuis la mise à jour Mango</title>
      <description>&lt;p&gt;J’ai eu une erreur dans un de mes projets WP7 lors du passage au SDK 7.1 (Mango), sur un code qui fonctionnait très bien avec le SDK 7.0, avec un message d’erreur très précis, comme on les aime :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-rqLUrVkc08M/TlO7ju3XmiI/AAAAAAAAB0s/vCx2pfAyYFo/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-6uudeRTxTLA/TlO7kLb-nII/AAAAAAAAB0w/Zmb7E-PVb_E/image_thumb%25255B3%25255D.png?imgmax=800" width="452" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Evidemment, pas moyen de trouver la moindre personne sur le net ayant déjà rencontré (et corrigé) l’erreur (quelqu’un a finalement posé la question sur &lt;a href="http://stackoverflow.com/questions/7132232/wp7-mango-retemplating-phoneapplicationframe-created-unspecified-error-excepti/7162283#7162283" target="_blank"&gt;StackOverflow&lt;/a&gt; ce week-end, ayant déjà trouvé la réponse entre temps j’espère lui avoir été utile).&lt;/p&gt;  &lt;p&gt;J’ai donc investigué pour trouver l’origine de ce bug, qui venait d’une Listbox, dont les templates des items avaient été redéfinis :&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox&lt;/span&gt;  &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;lstUsers&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Style&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TargetType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListBoxItem&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Property&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Template&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ContentControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ContentContainer&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;VerticalContentAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding VerticalContentAlignment}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;HorizontalContentAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding HorizontalContentAlignment}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding Padding}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding Content}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding ContentTemplate}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding Foreground}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;La solution : il faut définir la propriété TargetType sur le ControlTemplate : &lt;br /&gt;  &lt;br /&gt;&amp;lt;ControlTemplate TargetType=&amp;quot;ListBoxItem&amp;quot;&amp;gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox&lt;/span&gt;  &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;lstUsers&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Style&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TargetType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListBoxItem&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Property&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Template&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ControlTemplate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TargetType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListBoxItem&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ContentControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ContentContainer&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;VerticalContentAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding VerticalContentAlignment}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;HorizontalContentAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding HorizontalContentAlignment}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding Padding}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding Content}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding ContentTemplate}&amp;quot;&lt;/span&gt; &lt;br /&gt;                                        &lt;span style="color: #ff0000"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{TemplateBinding Foreground}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Setter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Maintenant ça fonctionne aussi bien avec l’ancien qu’avec le nouveau SDK :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-3387503874211231055?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/08/wp7-unspecified-error-lorsquon-modifie.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-6uudeRTxTLA/TlO7kLb-nII/AAAAAAAAB0w/Zmb7E-PVb_E/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">2</total>
    </item>
    <item>
      <title>[Tips] Popup avec le Surface SDK 2.0</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/07/27/tips-popup-avec-le-surface-sdk-2-0.aspx</link>
      <pubDate>Wed, 27 Jul 2011 08:38:46 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:51231</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/51231.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=51231</commentRss>
      <description>
  Grace au Surface SDK 2.0, on peut très simplement créer des applications touch sur n’importe quel PC tactile. Mon problème est que ce SDK ne propose pas de contrôle Popup et que l’utilisation de la Popup native WP4 pose des problèmes :     Pas de gest...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=51231" width="1" height="1"&gt;</description>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=1a9bec02-b7f0-4aa2-954f-7306404b6f02</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,1a9bec02-b7f0-4aa2-954f-7306404b6f02.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,1a9bec02-b7f0-4aa2-954f-7306404b6f02.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1a9bec02-b7f0-4aa2-954f-7306404b6f02</commentRss>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Venez-dcouvrir-le-Kinect-SDK_ED57/image_2.png">
            <img style="background-image: none; border-right-width: 0px; margin: 0px 6px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Venez-dcouvrir-le-Kinect-SDK_ED57/image_thumb.png" width="238" height="244" />
          </a>Suite
à la sortie du Kinect Windows SDK, Microsoft France organise demain, mardi 28 juin,
un après midi du développement pour vous faire découvrir ce SDK. Alors si vous n’êtes
pas encore inscrits, dépêchez-vous, ça se passe par <a href="http://msdn.microsoft.com/fr-fr/gg416477">ici</a>.
</p>
        <p>
Je présenterai pour ma part le pilotage d’une scène 3D temps réel avec Kinect.
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=1a9bec02-b7f0-4aa2-954f-7306404b6f02" />
      </body>
      <title>Venez découvrir le Kinect SDK !</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,1a9bec02-b7f0-4aa2-954f-7306404b6f02.aspx</guid>
      <link>http://benoitlaut.net/2011/06/27/VenezD%c3%a9couvrirLeKinectSDK.aspx</link>
      <pubDate>Mon, 27 Jun 2011 15:02:28 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Venez-dcouvrir-le-Kinect-SDK_ED57/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 6px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Venez-dcouvrir-le-Kinect-SDK_ED57/image_thumb.png" width="238" height="244"&gt;&lt;/a&gt;Suite
à la sortie du Kinect Windows SDK, Microsoft France organise demain, mardi 28 juin,
un après midi du développement pour vous faire découvrir ce SDK. Alors si vous n’êtes
pas encore inscrits, dépêchez-vous, ça se passe par &lt;a href="http://msdn.microsoft.com/fr-fr/gg416477"&gt;ici&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Je présenterai pour ma part le pilotage d’une scène 3D temps réel avec Kinect.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=1a9bec02-b7f0-4aa2-954f-7306404b6f02" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,1a9bec02-b7f0-4aa2-954f-7306404b6f02.aspx</comments>
      <category>Kinect</category>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-3521117448678620324</guid>
      <pubDate>Fri, 20 May 2011 13:30:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-05-20T15:30:33.967+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">Windows Phone</category>
      <category domain="http://www.blogger.com/atom/ns#">Bewise</category>
      <title>Découvrez les Bewise Phone Controls</title>
      <description>&lt;p&gt;Bonjour tout le monde ! Aujourd’hui je fais un billet pour vous présenter les &lt;a href="http://bewisephonecontrols.codeplex.com/" target="_blank"&gt;Bewise Phone Controls&lt;/a&gt;, une librairie de contrôles pour développeurs Windows Phone ; projet que je gère avec &lt;a href="http://www.maneu.fr" target="_blank"&gt;Christopher Maneu&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;La version 2 de la librairie est disponible, et vous pouvez trouver plein de contrôles bien sympa. Mes préférés :&lt;/p&gt;  &lt;p&gt;La &lt;strong&gt;JumpList&lt;/strong&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/TdZs5H1yIFI/AAAAAAAAB0I/nZ3h3Hi29ag/s1600-h/image%5B17%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_1fIQLbpqRAw/TdZs5iatsRI/AAAAAAAAB0M/leuMg1LAZYg/image_thumb%5B7%5D.png?imgmax=800" width="232" height="416" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/TdZs6ZNusKI/AAAAAAAAB0Q/SfTiFv0ATVs/s1600-h/image%5B18%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_1fIQLbpqRAw/TdZs6-fmETI/AAAAAAAAB0U/lU5F3STiCEI/image_thumb%5B8%5D.png?imgmax=800" width="230" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;L’&lt;strong&gt;OrderableList&lt;/strong&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/TdZs7boflpI/AAAAAAAAB0Y/KgS6Ey5-FU8/s1600-h/image%5B22%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_1fIQLbpqRAw/TdZs9Y0WTMI/AAAAAAAAB0c/_mC_0-y4coo/image_thumb%5B10%5D.png?imgmax=800" width="322" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Le &lt;strong&gt;TileButton&lt;/strong&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/TdZs96IsItI/AAAAAAAAB0g/BquDxXM_S2E/s1600-h/image%5B26%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_1fIQLbpqRAw/TdZs-P0rIjI/AAAAAAAAB0k/rBx3FdvrGeQ/image_thumb%5B12%5D.png?imgmax=800" width="156" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Il y en a bien d’autres, je vous laisse aller sur &lt;a href="http://bewisephonecontrols.codeplex.com/" target="_blank"&gt;le site officiel du projet&lt;/a&gt; pour les découvrir.&lt;/p&gt;  &lt;p&gt;Ces contrôles là ont été travaillés au niveau du rendu et des animations pour permettre aux développeurs d’offrir une expérience utilisateur la plus fluide et la plus agréable possible. C’est difficile à montrer en quelques captures d’écran, mais je vous assure que ça a été travaillé, et j’espère que vous les essaierez et que vous les apprécierez.&lt;/p&gt;  &lt;p&gt;Pour utiliser les Bewise Phone Controls dans votre projet, vous pouvez soit télécharger la dll, soit l’installer en cherchant “Bewise” dans NuGet. &lt;/p&gt;  &lt;p&gt;Vous pouvez aussi utiliser la ligne de commande NuGet suivante :&lt;/p&gt;  &lt;p&gt;Install-Package BewisePhoneControls&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-3521117448678620324?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/05/decouvrez-les-bewise-phone-controls.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_1fIQLbpqRAw/TdZs5iatsRI/AAAAAAAAB0M/leuMg1LAZYg/s72-c/image_thumb%5B7%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title>MIX11 : Prochaine version de Windows Phone 7</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/04/13/mix11-prochaine-version-de-windows-phone-7.aspx</link>
      <pubDate>Wed, 13 Apr 2011 21:20:09 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:50798</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>
      <comments>http://blogs.developpeur.org/vko/comments/50798.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=50798</commentRss>
      <description>
  Impression après le second keynote : Wouah ! La présentation de la prochaine version de Windows Phone 7 était vraiment impressionnante, la liste des fonctionnalités  qui seront disponibles est énorme (1500 !). Seul ombre au tableau : il va falloir att...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=50798" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>MIX11 : NUI et Surface 2</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/04/12/mix11-nui-et-surface-2.aspx</link>
      <pubDate>Tue, 12 Apr 2011 22:30:22 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:50792</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/50792.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=50792</commentRss>
      <description>
  Il me tardait de pouvoir voir cette nouvelle version de la table surface : c’est chose faite et je ne suis pas mécontent. Durant la session, on nous a présenté les nouveautés de cette Surface 2.  On a donc pu voir une version Alpha de la Surface 2 don...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=50792" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>MIX11 : HTML5 for Silverlight Developpers</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/04/12/mix11-html5-for-silverlight-developpers.aspx</link>
      <pubDate>Tue, 12 Apr 2011 19:25:28 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:50790</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/50790.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=50790</commentRss>
      <description>
  Première session après le Keynote dans laquelle Georgio Sardo nous présente les équivalences entres HTML5 et Silverlight.  Ce que je retiens c’est que le duo HTML5/CSS3 comble une partie des lacunes : vectorisation, layout, transform, animation, font,...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=50790" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>MIX11 : Boot Camp Silverlight 5</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/04/11/mix11-boot-camp-silverlight-5.aspx</link>
      <pubDate>Mon, 11 Apr 2011 19:37:10 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:50784</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/50784.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=50784</commentRss>
      <description>
  En direct du Mix, quelques trucs au niveau du boot camp Silverlight :     Quelques nouveautés de la prochaine version de RIA Services (complexe type, custom code generator, …)    L’ajout du très attendu évènement OnDataContextChanged (enfin)    Rien d...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=50784" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-303545514772783462</guid>
      <pubDate>Fri, 25 Mar 2011 21:57:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-03-25T22:57:35.368+01:00</updated>
      <title>Mes applications WP7</title>
      <description>&lt;p&gt;Bonsoir tout le monde !&lt;/p&gt;  &lt;p&gt;Aujourd’hui je ne blogue pas pour parler d’un point technique, je veux juste vous parler de l’ouverture de mon site web sur mes applications Windows Phone.&lt;/p&gt;  &lt;p&gt;J’ai activé la fonction blog dessus, histoire d’avoir un endroit où parler de Windows Phone, il n’y aura certainement pas grand chose d’intéressant, mais je ne force personne à le lire.&lt;/p&gt;  &lt;p&gt;Le lien : &lt;a href="http://wp7.adhess.net"&gt;http://wp7.adhess.net&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;(et si vous aimez mes applications, n’ayez pas peur d’en faire la pub)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-303545514772783462?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/03/mes-applications-wp7.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title><![CDATA[BDC 2011]]></title>
      <link>http://dotnet.over-blog.fr/article-bdc-2011-69941448.html</link>
      <description><![CDATA[	Les innovations technologiques Microsoft présentées par les meilleurs experts de Bewise et Microsoft ! Entrez dans le jeu avec Bewise ! [ Inscrivez-vous dès maintenant ] Evénement gratuit destiné aux professionnels du développement et de l'IT, aux enseignants et étudiants. 1 Session Plénière 8[...]]]></description>
      <pubDate>Tue, 22 Mar 2011 11:24:00 +0100</pubDate>
      <guid isPermaLink="false">157072b1489dde54d2f85cb897a36964</guid>
      <category>NEWS</category>
      <comments>http://dotnet.over-blog.fr/article-bdc-2011-69941448-comments.html#anchorComment</comments>
    </item>
    <item>
      <title>Bewise Day Conference 2011 le jeudi 7 avril à Toulouse</title>
      <link>http://blogs.developpeur.org/vko/archive/2011/03/17/bewise-day-conference-2011-le-jeudi-7-avril-toulouse.aspx</link>
      <pubDate>Thu, 17 Mar 2011 09:49:53 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:50625</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/50625.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=50625</commentRss>
      <description>
  Comme chaque année Bewise organise sa conférence technique sur Toulouse : la BDC. Si vous êtes dans la région, ça serait bête de rater une pareille occasion de découvrir et échanger sur les dernières technologies Microsoft.  Pour vous inscrire gratuit...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=50625" width="1" height="1"&gt;</description>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=23c5ef73-8d16-49df-98ad-8fc74f37beda</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,23c5ef73-8d16-49df-98ad-8fc74f37beda.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,23c5ef73-8d16-49df-98ad-8fc74f37beda.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=23c5ef73-8d16-49df-98ad-8fc74f37beda</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
La problématique est dans le titre : comment peut-on lancer l’exécution d’une build
à partir d’une autre ? D’autre part, j’aimerai également que la build maitre, attende
la fin de l’exécution de la build enfant, et en fonction de son statut qu’elle s’arrête
ou continue.
</p>
        <p>
La première chose à faire est de développer une activité Workflow Foundation qui va
permettre de lancer l’exécution d’une build :
</p>
        <ul>
          <li>
Créer un nouveau projet de type Activity Library</li>
          <li>
Ajouter les références suivantes : Microsoft.TeamFoundation.Client, Microsoft.TeamFoundation.Build.Client</li>
          <li>
Ajouter une Code Activity. Voici le code de notre activité :</li>
        </ul>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>[BuildActivity(HostEnvironmentOption.All)]</pre>
          <pre>
            <span class="lnum"> 2: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">sealed</span>
            <span class="kwrd">class</span> QueueDemoDefinitionBuildActivity
: CodeActivity</pre>
          <pre class="alt">
            <span class="lnum"> 3: </span>{</pre>
          <pre>
            <span class="lnum"> 4: </span>
            <span class="kwrd">private</span>
            <span class="kwrd">const</span>
            <span class="kwrd">string</span> TfsCollectionUri
= <span class="str">"http://localhost:8080/tfs/defaultcollection"</span>;</pre>
          <pre class="alt">
            <span class="lnum"> 5: </span>
            <span class="kwrd">private</span>
            <span class="kwrd">const</span>
            <span class="kwrd">string</span> BuildDefinitionName
= <span class="str">"DemoDefinition"</span>;</pre>
          <pre>
            <span class="lnum"> 6: </span>
            <span class="kwrd">private</span>
            <span class="kwrd">const</span>
            <span class="kwrd">string</span> TeamProjectName
= <span class="str">"Demo"</span>;</pre>
          <pre class="alt">
            <span class="lnum"> 7: </span> </pre>
          <pre>
            <span class="lnum"> 8: </span>
            <span class="kwrd">public</span> OutArgument&lt;IQueuedBuild&gt;
Build { get; set; }</pre>
          <pre class="alt">
            <span class="lnum"> 9: </span> </pre>
          <pre>
            <span class="lnum"> 10: </span>
            <span class="kwrd">protected</span>
            <span class="kwrd">override</span>
            <span class="kwrd">void</span> Execute(CodeActivityContext
context)</pre>
          <pre class="alt">
            <span class="lnum"> 11: </span> {</pre>
          <pre>
            <span class="lnum"> 12: </span> var
collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(<span class="kwrd">new</span> Uri(TfsCollectionUri));</pre>
          <pre class="alt">
            <span class="lnum"> 13: </span> collection.EnsureAuthenticated();</pre>
          <pre>
            <span class="lnum"> 14: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 15: </span> IBuildServer
buildServer = (IBuildServer)collection.GetService(<span class="kwrd">typeof</span>(IBuildServer));</pre>
          <pre>
            <span class="lnum"> 16: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 17: </span> </pre>
          <pre>
            <span class="lnum"> 18: </span> var
buildDefinition = buildServer.GetBuildDefinition(TeamProjectName, BuildDefinitionName);</pre>
          <pre class="alt">
            <span class="lnum"> 19: </span> </pre>
          <pre>
            <span class="lnum"> 20: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 21: </span> var
buildRequest = buildDefinition.CreateBuildRequest();</pre>
          <pre>
            <span class="lnum"> 22: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 23: </span> var
queuedBuild = buildServer.QueueBuild(buildRequest);</pre>
          <pre>
            <span class="lnum"> 24: </span>
          </pre>
          <pre class="alt">
            <span class="lnum"> 25: </span> Build.Set(context,
queuedBuild);</pre>
          <pre>
            <span class="lnum"> 26: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 27: </span>}</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
 
</p>
        <p>
Le principe est simple :
</p>
        <ul>
          <li>
On récupère le service de build depuis la collection de projets. 
</li>
          <li>
On récupère ensuite la définition de la build. 
</li>
          <li>
Et enfin on met en file la build via la méthode QueueBuild.</li>
        </ul>
        <p>
Dans notre activité, on remarque le paramètre de sortie Build de type IQueuedBuild
que l’on “set” à la fin de l’activité. Nous verrons par la suite à quoi il va servir.
</p>
        <p>
Il ne reste plus qu’à compiler, à déployer notre assembly dans le source control et
enfin d’indiquer au contrôleur de Build où se trouvent notre custom assembly.
</p>
        <p>
Pour illustrer cet exemple, j’ai créé un nouveau template de build xaml dans lequel
je fais simplement appel à ma nouvelle activité comme ceci :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb.png" width="501" height="133" />
          </a>
        </p>
        <p>
Pour récupérer le paramètre de sortie de cette activité, il nous faut déclarer une
variable au niveau de la séquence :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_1.png" width="634" height="162" />
          </a>
        </p>
        <p>
Ensuite dans les propriétés de l’activité QueueDemoDefinitionBuildActivity on récupére
le paramètre de sortie dans notre variable :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_2.png" width="422" height="187" />
          </a>
        </p>
        <p>
Comme je le disais au début de mon post, je veux que ma build maitre attende le résultat
de la build enfant. 
</p>
        <p>
Nous avons donc besoin d’une boucle While. Sa condition de sortie est que le statut
de la build est soit annulé soit terminé :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_8.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_3.png" width="471" height="218" />
          </a>
        </p>
        <p>
Dans le Body de cette boucle nous allons ajouter une activité de type Delay, de manière
à attendre quelques secondes (ou minutes) avant de revérifier le statut. Nous avons
également besoin d’appeler la méthode Refresh sur notre objet IQueuedBuild. En effet
les propriétés de notre variable ne se mette pas automatiquement à jour. Un appel
à la méthode Refresh est donc nécessaire.
</p>
        <p>
Les 2 activités dont nous avons besoin sont présentes dans la toolbox à cette endroit
:
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_4.png" width="363" height="161" />
          </a>
        </p>
        <p>
Dans l’activité While, on ajoute une activité de type séquence, puis on ajoute les
activités Delay et InvokeMethod comme ceci :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_12.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_5.png" width="278" height="362" />
          </a>
        </p>
        <p>
On paramètre l’activité Delay :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_32.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_15.png" width="494" height="157" />
          </a>
        </p>
        <p>
Pour l’activité InvokeMethod, il faut indiquer l’objet sur lequel la méthode doit
être appelée, en l’occurrence QueuedBuild et le nom de la méthode, Refresh. La méthode
Refresh prend en paramètre d’entrée une valeur de l’énumération QueryOptions. Dans
les propriétés de l’activité InvoMethod, il est possible de renseigner les paramètres
d’entrée et de sortie :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_14.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_6.png" width="642" height="396" />
          </a>
        </p>
        <p>
Une fois que l’on sort de la boucle, cela signifie que la build est terminée. Mais
la propriété Status de l’objet QueuedBuild ne nous dis pas si la build est dans l’état
Fail ou Success. Pour celà il faut accéder à la propriété suivante : QueuedBuild.Build.Status.
Mais encore une fois il faut appeler la méthode Refresh sur la propriété Build :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_16.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_7.png" width="273" height="174" />
          </a>
        </p>
        <p>
Et maintenant, on met à jour le statut de la build maitre en fonction du résultat
de la build enfant à l’aide d’une activité SetBuildProperties,
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_18.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_8.png" width="253" height="59" />
          </a>
        </p>
        <p>
que l’on paramètre de cette manière :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_20.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_9.png" width="437" height="389" />
          </a>
        </p>
        <p>
Une fois notre workflow de build terminé, on crée une définition de build basée sur
ce template :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_22.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_10.png" width="421" height="237" />
          </a>
        </p>
        <p>
Avant de lancer l’exécution de la build, il faut vérifier que le service de build
à la possibilité d’exécuter plusieurs build simultanément. Si ce n’est pas le cas,
lorsque la build maitre va lancer l’exécution de la build enfant, la build enfant
va attendre que la première soit terminée pour s’exécuter. Et la première va attendre
que la build enfant soit terminée aussi… Donc pour vérifier ça, ouvrir la console
d’administration de TFS sur le serveur de Build et vérifier la concurrence des builds
au niveau des propriétés du contrôleur :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_24.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_11.png" width="460" height="464" />
          </a>
        </p>
        <p>
On peut maintenant tester et lancer la Master Build. Si on regarde le log d’exécution,
on peut voir notre boucle d’attente pendant que l’autre build s’exécute :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_26.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_12.png" width="381" height="521" />
          </a>
        </p>
        <p>
Depuis la liste des builds en cours d’exécution on aperçoit nos 2 builds :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_28.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_13.png" width="537" height="228" />
          </a>
        </p>
        <p>
Et enfin au niveau des résultats, si la build enfant échoue alors la master échoue
également :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_30.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_14.png" width="537" height="237" />
          </a>
        </p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=23c5ef73-8d16-49df-98ad-8fc74f37beda" />
      </body>
      <title>Lancer l’exécution d’une build TFS depuis une autre build</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,23c5ef73-8d16-49df-98ad-8fc74f37beda.aspx</guid>
      <link>http://benoitlaut.net/2011/03/11/LancerLex%c3%a9cutionDuneBuildTFSDepuisUneAutreBuild.aspx</link>
      <pubDate>Fri, 11 Mar 2011 16:19:34 GMT</pubDate>
      <description>&lt;p&gt;
La problématique est dans le titre : comment peut-on lancer l’exécution d’une build
à partir d’une autre ? D’autre part, j’aimerai également que la build maitre, attende
la fin de l’exécution de la build enfant, et en fonction de son statut qu’elle s’arrête
ou continue.
&lt;/p&gt;
&lt;p&gt;
La première chose à faire est de développer une activité Workflow Foundation qui va
permettre de lancer l’exécution d’une build :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Créer un nouveau projet de type Activity Library&lt;/li&gt;
&lt;li&gt;
Ajouter les références suivantes : Microsoft.TeamFoundation.Client, Microsoft.TeamFoundation.Build.Client&lt;/li&gt;
&lt;li&gt;
Ajouter une Code Activity. Voici le code de notre activité :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;[BuildActivity(HostEnvironmentOption.All)]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;sealed&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; QueueDemoDefinitionBuildActivity
: CodeActivity&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; TfsCollectionUri
= &lt;span class="str"&gt;"http://localhost:8080/tfs/defaultcollection"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; BuildDefinitionName
= &lt;span class="str"&gt;"DemoDefinition"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; TeamProjectName
= &lt;span class="str"&gt;"Demo"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;IQueuedBuild&amp;gt;
Build { get; set; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext
context)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; var
collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(TfsCollectionUri));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; collection.EnsureAuthenticated();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; IBuildServer
buildServer = (IBuildServer)collection.GetService(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(IBuildServer));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; var
buildDefinition = buildServer.GetBuildDefinition(TeamProjectName, BuildDefinitionName);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; var
buildRequest = buildDefinition.CreateBuildRequest();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; var
queuedBuild = buildServer.QueueBuild(buildRequest);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; Build.Set(context,
queuedBuild);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Le principe est simple :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
On récupère le service de build depuis la collection de projets. 
&lt;/li&gt;
&lt;li&gt;
On récupère ensuite la définition de la build. 
&lt;/li&gt;
&lt;li&gt;
Et enfin on met en file la build via la méthode QueueBuild.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Dans notre activité, on remarque le paramètre de sortie Build de type IQueuedBuild
que l’on “set” à la fin de l’activité. Nous verrons par la suite à quoi il va servir.
&lt;/p&gt;
&lt;p&gt;
Il ne reste plus qu’à compiler, à déployer notre assembly dans le source control et
enfin d’indiquer au contrôleur de Build où se trouvent notre custom assembly.
&lt;/p&gt;
&lt;p&gt;
Pour illustrer cet exemple, j’ai créé un nouveau template de build xaml dans lequel
je fais simplement appel à ma nouvelle activité comme ceci :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb.png" width="501" height="133"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Pour récupérer le paramètre de sortie de cette activité, il nous faut déclarer une
variable au niveau de la séquence :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_1.png" width="634" height="162"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Ensuite dans les propriétés de l’activité QueueDemoDefinitionBuildActivity on récupére
le paramètre de sortie dans notre variable :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_2.png" width="422" height="187"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Comme je le disais au début de mon post, je veux que ma build maitre attende le résultat
de la build enfant. 
&lt;/p&gt;
&lt;p&gt;
Nous avons donc besoin d’une boucle While. Sa condition de sortie est que le statut
de la build est soit annulé soit terminé :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_3.png" width="471" height="218"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dans le Body de cette boucle nous allons ajouter une activité de type Delay, de manière
à attendre quelques secondes (ou minutes) avant de revérifier le statut. Nous avons
également besoin d’appeler la méthode Refresh sur notre objet IQueuedBuild. En effet
les propriétés de notre variable ne se mette pas automatiquement à jour. Un appel
à la méthode Refresh est donc nécessaire.
&lt;/p&gt;
&lt;p&gt;
Les 2 activités dont nous avons besoin sont présentes dans la toolbox à cette endroit
:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_4.png" width="363" height="161"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dans l’activité While, on ajoute une activité de type séquence, puis on ajoute les
activités Delay et InvokeMethod comme ceci :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_5.png" width="278" height="362"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
On paramètre l’activité Delay :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_32.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_15.png" width="494" height="157"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Pour l’activité InvokeMethod, il faut indiquer l’objet sur lequel la méthode doit
être appelée, en l’occurrence QueuedBuild et le nom de la méthode, Refresh. La méthode
Refresh prend en paramètre d’entrée une valeur de l’énumération QueryOptions. Dans
les propriétés de l’activité InvoMethod, il est possible de renseigner les paramètres
d’entrée et de sortie :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_14.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_6.png" width="642" height="396"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Une fois que l’on sort de la boucle, cela signifie que la build est terminée. Mais
la propriété Status de l’objet QueuedBuild ne nous dis pas si la build est dans l’état
Fail ou Success. Pour celà il faut accéder à la propriété suivante : QueuedBuild.Build.Status.
Mais encore une fois il faut appeler la méthode Refresh sur la propriété Build :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_16.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_7.png" width="273" height="174"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Et maintenant, on met à jour le statut de la build maitre en fonction du résultat
de la build enfant à l’aide d’une activité SetBuildProperties,
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_18.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_8.png" width="253" height="59"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
que l’on paramètre de cette manière :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_20.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_9.png" width="437" height="389"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Une fois notre workflow de build terminé, on crée une définition de build basée sur
ce template :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_22.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_10.png" width="421" height="237"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Avant de lancer l’exécution de la build, il faut vérifier que le service de build
à la possibilité d’exécuter plusieurs build simultanément. Si ce n’est pas le cas,
lorsque la build maitre va lancer l’exécution de la build enfant, la build enfant
va attendre que la première soit terminée pour s’exécuter. Et la première va attendre
que la build enfant soit terminée aussi… Donc pour vérifier ça, ouvrir la console
d’administration de TFS sur le serveur de Build et vérifier la concurrence des builds
au niveau des propriétés du contrôleur :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_24.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_11.png" width="460" height="464"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
On peut maintenant tester et lancer la Master Build. Si on regarde le log d’exécution,
on peut voir notre boucle d’attente pendant que l’autre build s’exécute :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_26.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_12.png" width="381" height="521"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Depuis la liste des builds en cours d’exécution on aperçoit nos 2 builds :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_28.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_13.png" width="537" height="228"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Et enfin au niveau des résultats, si la build enfant échoue alors la master échoue
également :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_30.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Mettre-une-build-en-file-depuis-une-autr_E542/image_thumb_14.png" width="537" height="237"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=23c5ef73-8d16-49df-98ad-8fc74f37beda" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,23c5ef73-8d16-49df-98ad-8fc74f37beda.aspx</comments>
      <category>TFS</category>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=fd3b832d-4f28-471c-aa02-7c27b6c6b05e</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,fd3b832d-4f28-471c-aa02-7c27b6c6b05e.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,fd3b832d-4f28-471c-aa02-7c27b6c6b05e.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=fd3b832d-4f28-471c-aa02-7c27b6c6b05e</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Le millésime 2011 de la Bewise Day Conference est annoncé pour le 7 avril et se déroulera
au casino Barrière à Toulouse.
</p>
        <p>
Vous pouvez d’ores et déjà vous y inscrire depuis le site <a href="http://bdc2011.bewise.fr/?canal=blog">BDC2011</a> et
suivre l’évènement depuis <a href="http://www.facebook.com/#!/event.php?eid=204476262902486">sa
page facebook</a>.
</p>
        <p>
Cette année j’animerai une session sur Windows Azure et vous me retrouverez également
sur l’ATE Windows Azure.
</p>
        <p>
Une petite vidéo de teasing où comme souvent dans les vidéos de Bewise nous apercevons
notre ami Guillaume L. :
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:702cd8cf-fc6c-4215-a074-314f913ba427" class="wlWriterEditableSmartContent">
          <div id="854597b3-b926-44a5-a470-17b717c8c825" style="margin: 0px; padding: 0px; display: inline;">
            <div>
              <a href="http://www.youtube.com/watch?v=Jw3Fg9-LqMA&amp;feature=player_embedded" target="_new">
                <img src="http://benoitlaut.net/content/binary/Windows-Live-Writer/B_99CB/video00eea92dc7ce.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('854597b3-b926-44a5-a470-17b717c8c825'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;448\&quot; height=\&quot;252\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/Jw3Fg9-LqMA?hl=en&amp;hd=1\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/Jw3Fg9-LqMA?hl=en&amp;hd=1\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;448\&quot; height=\&quot;252\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt="" />
              </a>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=fd3b832d-4f28-471c-aa02-7c27b6c6b05e" />
      </body>
      <title>BDC 2011 : Faites vos jeux!</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,fd3b832d-4f28-471c-aa02-7c27b6c6b05e.aspx</guid>
      <link>http://benoitlaut.net/2011/03/04/BDC2011FaitesVosJeux.aspx</link>
      <pubDate>Fri, 04 Mar 2011 09:16:00 GMT</pubDate>
      <description>&lt;p&gt;
Le millésime 2011 de la Bewise Day Conference est annoncé pour le 7 avril et se déroulera
au casino Barrière à Toulouse.
&lt;/p&gt;
&lt;p&gt;
Vous pouvez d’ores et déjà vous y inscrire depuis le site &lt;a href="http://bdc2011.bewise.fr/?canal=blog"&gt;BDC2011&lt;/a&gt; et
suivre l’évènement depuis &lt;a href="http://www.facebook.com/#!/event.php?eid=204476262902486"&gt;sa
page facebook&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Cette année j’animerai une session sur Windows Azure et vous me retrouverez également
sur l’ATE Windows Azure.
&lt;/p&gt;
&lt;p&gt;
Une petite vidéo de teasing où comme souvent dans les vidéos de Bewise nous apercevons
notre ami Guillaume L. :
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:702cd8cf-fc6c-4215-a074-314f913ba427" class="wlWriterEditableSmartContent"&gt;
&lt;div id="854597b3-b926-44a5-a470-17b717c8c825" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=Jw3Fg9-LqMA&amp;amp;feature=player_embedded" target="_new"&gt;&lt;img src="http://benoitlaut.net/content/binary/Windows-Live-Writer/B_99CB/video00eea92dc7ce.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('854597b3-b926-44a5-a470-17b717c8c825'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/Jw3Fg9-LqMA?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/Jw3Fg9-LqMA?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=fd3b832d-4f28-471c-aa02-7c27b6c6b05e" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,fd3b832d-4f28-471c-aa02-7c27b6c6b05e.aspx</comments>
      <category>BDC 2011</category>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=dd8c2a76-d551-40cc-812e-935031ca38d1</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,dd8c2a76-d551-40cc-812e-935031ca38d1.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,dd8c2a76-d551-40cc-812e-935031ca38d1.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=dd8c2a76-d551-40cc-812e-935031ca38d1</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Avec l’un de mes collègues, nous avons récemment eu un débat autour de cette question,
que nous avons fini par élucider. Voici le contexte : nous avons une classe A et une
classe B, aucun héritage n’existe entre ces 2 classes, par contre nous redéfinissons
l’opérateur de cast explicite de cette manière :
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> B</pre>
          <pre>
            <span class="lnum"> 2: </span>{</pre>
          <pre class="alt">
            <span class="lnum"> 3: </span>}</pre>
          <pre>
            <span class="lnum"> 4: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 5: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> A</pre>
          <pre>
            <span class="lnum"> 6: </span>{</pre>
          <pre class="alt">
            <span class="lnum"> 7: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">static</span>
            <span class="kwrd">explicit</span>
            <span class="kwrd">operator</span> B(A
a)</pre>
          <pre>
            <span class="lnum"> 8: </span> {</pre>
          <pre class="alt">
            <span class="lnum"> 9: </span>
            <span class="kwrd">return</span>
            <span class="kwrd">new</span> B();</pre>
          <pre>
            <span class="lnum"> 10: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 11: </span>}</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <h1>
          <font color="#0000ff"></font>
        </h1>
        <p>
Une fois que nous avons défini ces 2 classes, il est tout à fait possible d’effectuer
un cast entre un objet A et un objet B :
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>A a = <span class="kwrd">new</span> A();</pre>
          <pre>
            <span class="lnum"> 2: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 3: </span>B
b = (B)a;</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
 
</p>
        <p>
Maintenant que ce passe-t-il si on instancie une liste d’objets A et que l’on appelle
la méthode d’extension Cast&lt;T&gt; comme ceci :
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>var list = <span class="kwrd">new</span> List&lt;A&gt;()
{ <span class="kwrd">new</span> A(), <span class="kwrd">new</span> A() };</pre>
          <pre>
            <span class="lnum"> 2: </span>list.Cast&lt;B&gt;().ToList();</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
 
</p>
        <p>
Et bien à l’exécution, notre opérateur de cast explicite n’est pas appelé. Par contre
une exception InvalidCastException est levée. La première réponse que l’on m’a donné
était de dire que la méthode d’extension Cast&lt;T&gt; ne fait pas un cast… 
</p>
        <p>
Utilisons notre outil préféré (ou presque puisqu’il va bientôt devenir payant… ;))
Reflector. En reflectant la méthode Cast&lt;T&gt;, on peut voir qu’elle fait appel
à la classe CastIterator. Celle-ci est tout simplement un itérateur sur notre collection
qui dans la méthode MoveNext affecte à l’objet courant l’objet casté :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb.png" width="336" height="101" />
          </a>
        </p>
        <p>
Donc oui la méthode Cast&lt;T&gt; fait un cast… d’après le code C#.  Car en fait,
plus précisément, elle fait une opération de type unbox.any, comme le montre le code
IL suivant :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb_1.png" width="504" height="127" />
          </a>
        </p>
        <p>
C’est justement là qu’est notre problème. La classe CastIterator ne connait pas notre
type A et elle itère sur une liste de type IEnumerable. Donc pour la classe CastIterator,
nos objets sont de type System.Object. A cet endroit, un cast est effectué entre un
objet de type System.Object et un type TResult. Du coup il fait un unbox (équivalent
à l’opérateur castclass).
</p>
        <p>
Décompilons maintenant le code écrit au tout début de ce post, qui caste notre variable
de type A en type B :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb_2.png" width="705" height="80" />
          </a>
        </p>
        <p>
Nous voyons bien que le compilateur a trouvé notre opérateur explicite et donc l’appelle
pour effectuer la conversion.
</p>
        <p>
Pour reproduire ce qu’il se passe au niveau du CastIterator, il suffit d’écrire ceci
:
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>A a = <span class="kwrd">new</span> A();</pre>
          <pre>
            <span class="lnum"> 2: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 3: </span>
            <span class="kwrd">object</span> o
= a;</pre>
          <pre>
            <span class="lnum"> 4: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 5: </span>B
b = (B)o;</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
Et ici, le compilateur fait appel à l’opérateur castclass et non à notre opérateur
de cast explicite :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_8.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb_3.png" width="452" height="127" />
          </a>
        </p>
        <p>
Pour palier ce problème nous avons 2 solutions. La 1ère consiste à effectuer le cast
soit même dans un Select :
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>var list = <span class="kwrd">new</span> List&lt;A&gt;()
{ <span class="kwrd">new</span> A(), <span class="kwrd">new</span> A() };</pre>
          <pre>
            <span class="lnum"> 2: </span>var
result = list.Select(a =&gt; (B) a);</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
La seconde solution consiste a utiliser le mécanisme de Reflection pour retrouver
l’existence de l’opérateur. On peut ainsi définir la méthode d’extension suivante
:
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">static</span>
            <span class="kwrd">class</span> EnumarableExtensions</pre>
          <pre>
            <span class="lnum"> 2: </span>{</pre>
          <pre class="alt">
            <span class="lnum"> 3: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">static</span> MethodInfo
GetMethod(Type toSearch, <span class="kwrd">string</span> methodName, Type returnType,
BindingFlags bindingFlags)</pre>
          <pre>
            <span class="lnum"> 4: </span> {</pre>
          <pre class="alt">
            <span class="lnum"> 5: </span>
            <span class="kwrd">return</span> Array.Find(toSearch.GetMethods(bindingFlags), <span class="kwrd">delegate</span>(MethodInfo
inf) { <span class="kwrd">return</span> ((inf.Name == methodName) &amp;&amp; (inf.ReturnType
== returnType)); });</pre>
          <pre>
            <span class="lnum"> 6: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 7: </span> </pre>
          <pre>
            <span class="lnum"> 8: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">static</span> IEnumerable&lt;T&gt;
DynamicCast&lt;T&gt;(<span class="kwrd">this</span> IEnumerable list)</pre>
          <pre class="alt">
            <span class="lnum"> 9: </span> {</pre>
          <pre>
            <span class="lnum"> 10: </span>
            <span class="kwrd">foreach</span> (var
obj <span class="kwrd">in</span> list)</pre>
          <pre class="alt">
            <span class="lnum"> 11: </span> {</pre>
          <pre>
            <span class="lnum"> 12: </span> Type
ot = obj.GetType();</pre>
          <pre class="alt">
            <span class="lnum"> 13: </span> MethodInfo
meth = GetMethod(ot, <span class="str">"op_Implicit"</span>, <span class="kwrd">typeof</span>(T),
BindingFlags.Static | BindingFlags.Public);</pre>
          <pre>
            <span class="lnum"> 14: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 15: </span>
            <span class="kwrd">if</span> (meth
== <span class="kwrd">null</span>)</pre>
          <pre>
            <span class="lnum"> 16: </span> {</pre>
          <pre class="alt">
            <span class="lnum"> 17: </span> meth
= GetMethod(ot, <span class="str">"op_Explicit"</span>, <span class="kwrd">typeof</span>(T),
BindingFlags.Static | BindingFlags.Public);</pre>
          <pre>
            <span class="lnum"> 18: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 19: </span> </pre>
          <pre>
            <span class="lnum"> 20: </span>
            <span class="kwrd">if</span> (meth
== <span class="kwrd">null</span>)</pre>
          <pre class="alt">
            <span class="lnum"> 21: </span>
            <span class="kwrd">yield</span>
            <span class="kwrd">return</span> (T)obj;</pre>
          <pre>
            <span class="lnum"> 22: </span>
            <span class="kwrd">else</span>
          </pre>
          <pre class="alt">
            <span class="lnum"> 23: </span>
            <span class="kwrd">yield</span>
            <span class="kwrd">return</span> (T)meth.Invoke(<span class="kwrd">null</span>, <span class="kwrd">new</span>[]
{ obj });</pre>
          <pre>
            <span class="lnum"> 24: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 25: </span> </pre>
          <pre>
            <span class="lnum"> 26: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 27: </span>}</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
Et notre appel se fait ainsi :
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>var list = <span class="kwrd">new</span> List&lt;A&gt;()
{ <span class="kwrd">new</span> A(), <span class="kwrd">new</span> A() };</pre>
          <pre>
            <span class="lnum"> 2: </span>var
result = list.DynamicCast&lt;B&gt;();</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
 
</p>
        <p>
Et voilà un mystère d’élucidé! :)
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=dd8c2a76-d551-40cc-812e-935031ca38d1" />
      </body>
      <title>Pourquoi la méthode d’extension Cast&lt;T&gt; me lève l’exception InvalidCastException ?</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,dd8c2a76-d551-40cc-812e-935031ca38d1.aspx</guid>
      <link>http://benoitlaut.net/2011/03/04/PourquoiLaM%c3%a9thodeDextensionCastMeL%c3%a8veLexceptionInvalidCastException.aspx</link>
      <pubDate>Fri, 04 Mar 2011 06:00:00 GMT</pubDate>
      <description>&lt;p&gt;
Avec l’un de mes collègues, nous avons récemment eu un débat autour de cette question,
que nous avons fini par élucider. Voici le contexte : nous avons une classe A et une
classe B, aucun héritage n’existe entre ces 2 classes, par contre nous redéfinissons
l’opérateur de cast explicite de cette manière :
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; B&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; A&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;explicit&lt;/span&gt; &lt;span class="kwrd"&gt;operator&lt;/span&gt; B(A
a)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; B();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;h1&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;
&lt;/h1&gt;
&lt;p&gt;
Une fois que nous avons défini ces 2 classes, il est tout à fait possible d’effectuer
un cast entre un objet A et un objet B :
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;A a = &lt;span class="kwrd"&gt;new&lt;/span&gt; A();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;B
b = (B)a;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Maintenant que ce passe-t-il si on instancie une liste d’objets A et que l’on appelle
la méthode d’extension Cast&amp;lt;T&amp;gt; comme ceci :
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;var list = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;A&amp;gt;()
{ &lt;span class="kwrd"&gt;new&lt;/span&gt; A(), &lt;span class="kwrd"&gt;new&lt;/span&gt; A() };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;list.Cast&amp;lt;B&amp;gt;().ToList();&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Et bien à l’exécution, notre opérateur de cast explicite n’est pas appelé. Par contre
une exception InvalidCastException est levée. La première réponse que l’on m’a donné
était de dire que la méthode d’extension Cast&amp;lt;T&amp;gt; ne fait pas un cast… 
&lt;/p&gt;
&lt;p&gt;
Utilisons notre outil préféré (ou presque puisqu’il va bientôt devenir payant… ;))
Reflector. En reflectant la méthode Cast&amp;lt;T&amp;gt;, on peut voir qu’elle fait appel
à la classe CastIterator. Celle-ci est tout simplement un itérateur sur notre collection
qui dans la méthode MoveNext affecte à l’objet courant l’objet casté :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb.png" width="336" height="101"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Donc oui la méthode Cast&amp;lt;T&amp;gt; fait un cast… d’après le code C#.&amp;nbsp; Car en fait,
plus précisément, elle fait une opération de type unbox.any, comme le montre le code
IL suivant :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb_1.png" width="504" height="127"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
C’est justement là qu’est notre problème. La classe CastIterator ne connait pas notre
type A et elle itère sur une liste de type IEnumerable. Donc pour la classe CastIterator,
nos objets sont de type System.Object. A cet endroit, un cast est effectué entre un
objet de type System.Object et un type TResult. Du coup il fait un unbox (équivalent
à l’opérateur castclass).
&lt;/p&gt;
&lt;p&gt;
Décompilons maintenant le code écrit au tout début de ce post, qui caste notre variable
de type A en type B :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb_2.png" width="705" height="80"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nous voyons bien que le compilateur a trouvé notre opérateur explicite et donc l’appelle
pour effectuer la conversion.
&lt;/p&gt;
&lt;p&gt;
Pour reproduire ce qu’il se passe au niveau du CastIterator, il suffit d’écrire ceci
:
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;A a = &lt;span class="kwrd"&gt;new&lt;/span&gt; A();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&lt;span class="kwrd"&gt;object&lt;/span&gt; o
= a;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;B
b = (B)o;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
Et ici, le compilateur fait appel à l’opérateur castclass et non à notre opérateur
de cast explicite :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Pourquoi-la-mthode-dextension-CastT-me-r_E21A/image_thumb_3.png" width="452" height="127"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Pour palier ce problème nous avons 2 solutions. La 1ère consiste à effectuer le cast
soit même dans un Select :
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;var list = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;A&amp;gt;()
{ &lt;span class="kwrd"&gt;new&lt;/span&gt; A(), &lt;span class="kwrd"&gt;new&lt;/span&gt; A() };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;var
result = list.Select(a =&amp;gt; (B) a);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
La seconde solution consiste a utiliser le mécanisme de Reflection pour retrouver
l’existence de l’opérateur. On peut ainsi définir la méthode d’extension suivante
:
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; EnumarableExtensions&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; MethodInfo
GetMethod(Type toSearch, &lt;span class="kwrd"&gt;string&lt;/span&gt; methodName, Type returnType,
BindingFlags bindingFlags)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; Array.Find(toSearch.GetMethods(bindingFlags), &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(MethodInfo
inf) { &lt;span class="kwrd"&gt;return&lt;/span&gt; ((inf.Name == methodName) &amp;amp;&amp;amp; (inf.ReturnType
== returnType)); });&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt;
DynamicCast&amp;lt;T&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt; IEnumerable list)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var
obj &lt;span class="kwrd"&gt;in&lt;/span&gt; list)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; Type
ot = obj.GetType();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; MethodInfo
meth = GetMethod(ot, &lt;span class="str"&gt;"op_Implicit"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(T),
BindingFlags.Static | BindingFlags.Public);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (meth
== &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; meth
= GetMethod(ot, &lt;span class="str"&gt;"op_Explicit"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(T),
BindingFlags.Static | BindingFlags.Public);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (meth
== &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; &lt;span class="kwrd"&gt;yield&lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; (T)obj;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt; &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; &lt;span class="kwrd"&gt;yield&lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; (T)meth.Invoke(&lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt;[]
{ obj });&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
Et notre appel se fait ainsi :
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;var list = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;A&amp;gt;()
{ &lt;span class="kwrd"&gt;new&lt;/span&gt; A(), &lt;span class="kwrd"&gt;new&lt;/span&gt; A() };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;var
result = list.DynamicCast&amp;lt;B&amp;gt;();&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Et voilà un mystère d’élucidé! :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=dd8c2a76-d551-40cc-812e-935031ca38d1" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,dd8c2a76-d551-40cc-812e-935031ca38d1.aspx</comments>
      <category>C#</category>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=b1305f04-ec65-4e9a-93ad-806d5a251474</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,b1305f04-ec65-4e9a-93ad-806d5a251474.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,b1305f04-ec65-4e9a-93ad-806d5a251474.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=b1305f04-ec65-4e9a-93ad-806d5a251474</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Entity-Framework-doit-il-faire-peur-aux-_9447/image_2.png">
            <img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Entity-Framework-doit-il-faire-peur-aux-_9447/image_thumb.png" width="107" height="97" />
          </a>Avec
Entity Framework, et les outils de mapping objets relationnels de manière générale,
les développeurs écrivent facilement des requêtes Linq To Entities sans savoir le
SQL qui est réellement exécuté côté serveur. 
</p>
        <p>
On perd la maitrise du SQL exécuté, et ceci peut faire peur à nos chers administrateurs
SQL. <a href="http://labs.bewise.fr/Article/Entity-Framework-doit-il-faire-peur-aux-DBA--/">Dans
cette article</a> je vous propose de comparer les plans d’exécution des requêtes générées
par Entity Framework et des requêtes que nous aurions écrit à la main.
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=b1305f04-ec65-4e9a-93ad-806d5a251474" />
      </body>
      <title>Entity Framework doit-il faire peur aux DBA ?</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,b1305f04-ec65-4e9a-93ad-806d5a251474.aspx</guid>
      <link>http://benoitlaut.net/2011/03/03/EntityFrameworkDoitilFairePeurAuxDBA.aspx</link>
      <pubDate>Thu, 03 Mar 2011 09:48:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Entity-Framework-doit-il-faire-peur-aux-_9447/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Entity-Framework-doit-il-faire-peur-aux-_9447/image_thumb.png" width="107" height="97"&gt;&lt;/a&gt;Avec
Entity Framework, et les outils de mapping objets relationnels de manière générale,
les développeurs écrivent facilement des requêtes Linq To Entities sans savoir le
SQL qui est réellement exécuté côté serveur. 
&lt;/p&gt;
&lt;p&gt;
On perd la maitrise du SQL exécuté, et ceci peut faire peur à nos chers administrateurs
SQL. &lt;a href="http://labs.bewise.fr/Article/Entity-Framework-doit-il-faire-peur-aux-DBA--/"&gt;Dans
cette article&lt;/a&gt; je vous propose de comparer les plans d’exécution des requêtes générées
par Entity Framework et des requêtes que nous aurions écrit à la main.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=b1305f04-ec65-4e9a-93ad-806d5a251474" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,b1305f04-ec65-4e9a-93ad-806d5a251474.aspx</comments>
      <category>Entity Framework 4.0</category>
      <category>SQL Server</category>
    </item>
    <item>
      <title>Bewise Day Conference 2011</title>
      <description>&lt;div class="text"&gt;
&lt;p&gt;Maybe you know &lt;a href="http://www.bewise.fr" target="_blank"&gt;&lt;span style="color: #ba121f;"&gt;Bewise&lt;/span&gt;&lt;/a&gt;, Vertice's sister company, fully specialized on Microsoft technologies.&lt;/p&gt;
&lt;p&gt;For the fifth consecutive year, Bewise organizes in Toulouse (France)&amp;nbsp;a free technical conference with the participation of Vertice.&lt;/p&gt;
&lt;p&gt;&lt;span class="long_text"&gt;&lt;span style="background-color: #fff;"&gt;Vertice will be happy to welcome you on its booth to present Nova Range, on April 7,&amp;nbsp;2011.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #fff;"&gt;If you are not too far from&amp;nbsp;Toulouse on that date and if you understand french language please &lt;a href="http://bdc2011.bewise.fr/?canal=blog" target="_blank"&gt;&lt;span style="color: #ba121f;"&gt;register&lt;/span&gt;&lt;/a&gt; and come see us!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bdc2011.bewise.fr/?canal=blog" target="_blank"&gt;&lt;img src="http://blog.vertice.fr/image.axd?picture=2011%2f3%2fbandeau-bdc-2011.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description>
      <link>http://blog.vertice.fr/post/2011/03/03/Bewise-Day-Conference-2011.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/03/03/Bewise-Day-Conference-2011.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=1b0a3b72-913c-40d5-ad4a-63d2ac664f78</guid>
      <pubDate>Thu, 03 Mar 2011 10:06:00 +0100</pubDate>
      <category>BDC</category>
      <category>Bewise</category>
      <category>Community</category>
      <category>Fun</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=1b0a3b72-913c-40d5-ad4a-63d2ac664f78</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=1b0a3b72-913c-40d5-ad4a-63d2ac664f78</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/03/03/Bewise-Day-Conference-2011.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=1b0a3b72-913c-40d5-ad4a-63d2ac664f78</commentRss>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-4515400515976503002</guid>
      <pubDate>Tue, 01 Mar 2011 16:08:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-03-01T17:24:52.210+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">BDC</category>
      <category domain="http://www.blogger.com/atom/ns#">Bewise</category>
      <title>Rendez-vous à la Bewise Day Conference 2011</title>
      <description>&lt;p&gt;Encore une fois cette année Bewise organise une conférence sur les technologies de développement de Microsoft, &lt;a href="http://bdc2011.bewise.fr/?canal=blog"&gt;la Bewise Day Conference&lt;/a&gt;. Réservez donc votre journée le 7 avril prochain, et en attendant, prenez note de la règle n°1 :&lt;/p&gt; &lt;iframe title="YouTube video player" height="390" src="http://www.youtube.com/embed/Jw3Fg9-LqMA?rel=0" frameborder="0" width="640" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;p&gt;Rendez-vous donc au Casino Barrière à Toulouse le 7 avril 2011 pour cette nouvelle édition de la BDC.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-4515400515976503002?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/03/rendez-vous-la-bewise-day-conference.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/Jw3Fg9-LqMA/default.jpg" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-3663783580477455560</guid>
      <pubDate>Thu, 24 Feb 2011 10:33:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-02-24T11:33:19.917+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">.NET</category>
      <category domain="http://www.blogger.com/atom/ns#">Visual Studio</category>
      <title>Installation et utilisation de NuGet</title>
      <description>&lt;p&gt;A force d’en entendre parler, je me suis dit que j’allais quand même essayer NuGet, pour voir si ça marche bien.&lt;/p&gt;  &lt;p&gt;Pour ceux qui ne connaissent pas, NuGet est un gestionnaire de paquets pour le framework .Net, qui se présente sous la forme d’une extension de Visual Studio 2010.&lt;/p&gt;  &lt;p&gt;Il parait que c’est super simple à utiliser, alors je vais écrire cet article en live, en même temps que je découvre :o)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;L’installation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Pour installer NuGet, 2 options s’offrent à nous :&lt;/p&gt;  &lt;p&gt;- Aller sur &lt;a href="http://nuget.org/"&gt;le site web officiel de NuGet&lt;/a&gt;, et cliquer sur le bouton “Install Nuget”     &lt;br /&gt;- L’installer depuis l’Extension Manager de Visual Studio 2010. On recherche “Nuget”, et on clique sur le bouton “Download”&lt;/p&gt;  &lt;p&gt;Dans la fenêtre d’installation, on a juste à cliquer sur “Install”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/TWYz44FtTHI/AAAAAAAABzs/_vpKTCjF0kY/s1600-h/image%5B4%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_1fIQLbpqRAw/TWYz5VRyATI/AAAAAAAABzw/mBUqDYN1PyM/image_thumb%5B2%5D.png?imgmax=800" width="450" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Une fois l’extension installée, on redémarre Visual Studio, et en avant !&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Utilisation de NuGet&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;J’ai décidé de créer un nouveau projet ASP.NET MVC 3 (au hasard ^^), dans lequel je vais essayer d’installer mes packages.&lt;/p&gt;  &lt;p&gt;Dans le menu “Tools”, j’ai une nouvelle option : “Library Package Manager”. C’est lui notre fameux NuGet.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/TWYz53SjzDI/AAAAAAAABz0/SEvoN6nNVa8/s1600-h/image%5B9%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_1fIQLbpqRAw/TWYz6aapkTI/AAAAAAAABz4/Bcre7yJ54h0/image_thumb%5B5%5D.png?imgmax=800" width="658" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Je choisis l’option “Add Library Package Reference”, et je vais chercher mes packages.&lt;/p&gt;  &lt;p&gt;Je fais une recherche par nom, je clique sur “Install” :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/TWYz6-VRl2I/AAAAAAAABz8/r5B1TsX_ubw/s1600-h/image%5B14%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_1fIQLbpqRAw/TWYz7wxYG-I/AAAAAAAAB0A/W6jnDl-OjF8/image_thumb%5B8%5D.png?imgmax=800" width="899" height="598" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Et voilà, rien de plus à faire, T4MVC est automatiquement téléchargé et ajouté à mon projet.&lt;/p&gt;  &lt;p&gt;Pour supprimer, c’est pas plus compliqué : dans la liste des paquets installés, on en choisit un et on clique sur “Uninstall”, et tout est nettoyé.&lt;/p&gt;  &lt;p&gt;Bilan : c’est tellement simple que j’ai presque honte d’en faire un article sur mon blog, mais si comme moi vous hésitiez à l’installer, n’hésitez plus, c’est vraiment très pratique :o)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-3663783580477455560?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/02/installation-et-utilisation-de-nuget.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_1fIQLbpqRAw/TWYz5VRyATI/AAAAAAAABzw/mBUqDYN1PyM/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-8169340881793819967</guid>
      <pubDate>Mon, 21 Feb 2011 16:18:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-02-24T10:59:22.605+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">Sécurité</category>
      <category domain="http://www.blogger.com/atom/ns#">ASP.NET</category>
      <title>ASP.NET - Peut-on cliquer sur un bouton invisible ?</title>
      <description>&lt;p&gt;Contrairement à ce que &lt;a href="http://blogs.dotnet-france.com/juliend/post/ASPNET-Manque-de-rigueur-3d-faille-de-securite.aspx"&gt;nous affirme Julien Dollon&lt;/a&gt;, ce n’est pas possible. En effet, parmis les options de sécurité d’asp.net, on en a une qui vérifie qu’un évènement est bien levé par un contrôle existant. Voyons comment ça fonctionne.&lt;/p&gt;  &lt;p&gt;Premier test : on crée un bouton asp.net avec un évènement serveur associé :    &lt;br /&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Voyons le HTML généré pour ce bouton:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ctl00$MainContent$Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Faux Button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MainContent_Button1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Je décide de remettre cet input dans ma page web, pour pouvoir effectuer mes tests :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ctl00$MainContent$Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Faux Button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MainContent_Button1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Bon, d’un point de vue strictement html, ce n’est pas correct puisqu’on a 2 fois le même id, mais ce n’est pas grave, ça nous permets quand même de tester)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Vous pouvez maintenant relancer la page, et cliquer sur les 2 boutons : les 2 fonctionnent et appellent le même évènement serveur.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Second test : je masque mon bouton serveur, et je n’ai donc que l’input, qui est censé faire la même chose. Je clique dessus, et paf :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/TWKQQNFRoCI/AAAAAAAABzk/S50Try0WDmU/s1600-h/image%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_1fIQLbpqRAw/TWKQQ2Ra8rI/AAAAAAAABzo/w_a6zk0PXN8/image_thumb%5B1%5D.png?imgmax=800" width="900" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Cette fois, on a une exception. Comme je vous le disais en introduction (et comme c’est expliqué dans l’exception), asp.net vérifie que l’appel d’un évènement est bien fait pas le contrôle qui est censé le faire. Ici, le contrôle est invisible, donc il sait qu’on ne doit pas pouvoir cliquer dessus. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Comment ça fonctionne ? Si on va voir dans le code html de la page, on a ça :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;hidden&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;__EVENTVALIDATION&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;__EVENTVALIDATION&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/wEWAgK/nJySCALU8MqYCAhBiRxDmDNQ9n9ZcocpixkidLmpXhA4hY5aUcMhNlh9&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;La plupart des développeurs asp.net connaissent le viewstate, beaucoup moins connaissent ce champ caché nommé __EVENTVALIDATION. Comme son nom l’indique, il permets de valider les évènements. Il s’agit de données chiffrées permettant de savoir quels sont les boutons cliquables. Donc impossible pour un pirate de simuler un clic sur un bouton invisible !&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pour plus d’informations, je vous renvoie à &lt;a href="http://blogs.codes-sources.com/cyril/archive/2007/01/09/validation-d-evenement-en-asp-net-2-0-eventvalidation.aspx"&gt;l’article de Cyril Durand sur la validation d’évènements&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Il n’en reste pas moins que sur le fond, Julien a raison : même si asp.net nous facilite le travail, ne déléguez jamais la sécurité ;) il ne faut surtout pas se baser sur la visibilité d’un bouton pour donner des droits d’administration, les vérifications doivent impérativement être faites au niveau métier.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-8169340881793819967?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/02/aspnet-peut-on-cliquer-sur-un-bouton.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_1fIQLbpqRAw/TWKQQ2Ra8rI/AAAAAAAABzo/w_a6zk0PXN8/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title>Nova by Vertice at Imagina 2011 - Thank you</title>
      <description>&lt;p&gt;The Vertice Team wants to thank you for coming to meet us at Imagina 2011. It's my third participation to Imagina and I hadn't never seen so many people on our booth!&lt;/p&gt;
&lt;p&gt;For my technical part, I hope you liked my small demonstrations: SMS sending, Excel File to drive a Nova Scene, Kinect integration as a controller, etc. As I always said I'm a fan of interactive and demonstrative 3D. I'm tired to see that sometimes some vendors&amp;nbsp;just sell a technology only for the technology. It is time to put in front&amp;nbsp;the user needs. That's what we call in Vertice user-centered design. Feel free to contact me to discuss these topics.&lt;/p&gt;
&lt;p&gt;Also, feel free to download &lt;a href="http://www.vertice.fr/DownloadNovaStudioDemo.aspx" target="_blank"&gt;Nova Studio Demo&lt;/a&gt; to have a look to our range.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.vertice.fr/image.axd?picture=2011%2f2%2fImagina+2011+-+After3.jpg" alt="" /&gt;&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2011/02/08/Nova-by-Vertice-at-Imagina-2011-Thank-you.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/02/08/Nova-by-Vertice-at-Imagina-2011-Thank-you.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=b049d77d-463c-4795-a3e8-e0d9d7cbb099</guid>
      <pubDate>Tue, 08 Feb 2011 10:33:00 +0100</pubDate>
      <category>Community</category>
      <category>General</category>
      <category>Imagina</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=b049d77d-463c-4795-a3e8-e0d9d7cbb099</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=b049d77d-463c-4795-a3e8-e0d9d7cbb099</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/02/08/Nova-by-Vertice-at-Imagina-2011-Thank-you.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=b049d77d-463c-4795-a3e8-e0d9d7cbb099</commentRss>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=d2f24038-ef27-4248-b7ae-14f15fdff474</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,d2f24038-ef27-4248-b7ae-14f15fdff474.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,d2f24038-ef27-4248-b7ae-14f15fdff474.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d2f24038-ef27-4248-b7ae-14f15fdff474</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://labs.bewise.fr/">
            <img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/91684b30053a_D2BD/image_3.png" width="333" height="110" />
          </a>
          <a href="http://labs.bewise.fr/">Labs</a> est
un site dédié aux technologies Microsoft dont le but est de partager nos connaissances
et notre passion. 
</p>
        <p>
Vous y retrouverez tous les articles, projets, KB, études de cas ainsi que les blogs
des consultants de Bewise.
</p>
        <p>
N’hésitez pas <a href="mailto:benoit.laut@bewise.fr?subject=Labs Feedback">à nous
envoyer vos retours</a>.
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=d2f24038-ef27-4248-b7ae-14f15fdff474" />
      </body>
      <title>Bewise lance le site Labs!!</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,d2f24038-ef27-4248-b7ae-14f15fdff474.aspx</guid>
      <link>http://benoitlaut.net/2011/02/04/BewiseLanceLeSiteLabs.aspx</link>
      <pubDate>Fri, 04 Feb 2011 08:00:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://labs.bewise.fr/"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/91684b30053a_D2BD/image_3.png" width="333" height="110"&gt;&lt;/a&gt;&lt;a href="http://labs.bewise.fr/"&gt;Labs&lt;/a&gt; est
un site dédié aux technologies Microsoft dont le but est de partager nos connaissances
et notre passion. 
&lt;/p&gt;
&lt;p&gt;
Vous y retrouverez tous les articles, projets, KB, études de cas ainsi que les blogs
des consultants de Bewise.
&lt;/p&gt;
&lt;p&gt;
N’hésitez pas &lt;a href="mailto:benoit.laut@bewise.fr?subject=Labs Feedback"&gt;à nous
envoyer vos retours&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=d2f24038-ef27-4248-b7ae-14f15fdff474" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,d2f24038-ef27-4248-b7ae-14f15fdff474.aspx</comments>
      <category>Bewise</category>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=c61c2283-f496-4493-93a6-d2ad42949afd</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,c61c2283-f496-4493-93a6-d2ad42949afd.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,c61c2283-f496-4493-93a6-d2ad42949afd.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c61c2283-f496-4493-93a6-d2ad42949afd</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Le-1er-rendez-vous-de-lanneTechdays-2011_C658/Capture_2.jpg">
            <img style="background-image: none; border-right-width: 0px; margin: 0px 9px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Le-1er-rendez-vous-de-lanneTechdays-2011_C658/Capture_thumb.jpg" width="232" height="79" />
          </a> J-7
avant l’édition 2011 des Techdays. Je serai au rendez-vous et j’animerai avec <a href="http://alain-marty.blogspot.com/">Alain
Marty</a> la session <a href="http://www.microsoft.com/france/mstechdays/programmes/Session.aspx?CellID=83d4c071-e792-4616-813e-033fb711de95&amp;DomID=2b8b5257-75a5-4d07-9b2f-173740e7f56b">TFS
Basic</a> sur le parcours ALM.
</p>
        <p>
Vous pourrez également me croiser du côté des exposants et des partenaires Inner Circle
et <a href="http://azure.bewise.fr/">Azure Circle</a> toute la journée du 8 février.
</p>
        <p>
Pour retrouver tous les speakers Bewise c’est pas <a href="http://www.bewise.fr/actualite/117/Bewise-aux-TechDay-s.aspx">là</a>.
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=c61c2283-f496-4493-93a6-d2ad42949afd" />
      </body>
      <title>1er rendez-vous de l’année : Techdays 2011</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,c61c2283-f496-4493-93a6-d2ad42949afd.aspx</guid>
      <link>http://benoitlaut.net/2011/02/01/1erRendezvousDeLann%c3%a9eTechdays2011.aspx</link>
      <pubDate>Tue, 01 Feb 2011 13:20:45 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Le-1er-rendez-vous-de-lanneTechdays-2011_C658/Capture_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 9px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" align="left" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Le-1er-rendez-vous-de-lanneTechdays-2011_C658/Capture_thumb.jpg" width="232" height="79"&gt;&lt;/a&gt; J-7
avant l’édition 2011 des Techdays. Je serai au rendez-vous et j’animerai avec &lt;a href="http://alain-marty.blogspot.com/"&gt;Alain
Marty&lt;/a&gt; la session &lt;a href="http://www.microsoft.com/france/mstechdays/programmes/Session.aspx?CellID=83d4c071-e792-4616-813e-033fb711de95&amp;amp;DomID=2b8b5257-75a5-4d07-9b2f-173740e7f56b"&gt;TFS
Basic&lt;/a&gt; sur le parcours ALM.
&lt;/p&gt;
&lt;p&gt;
Vous pourrez également me croiser du côté des exposants et des partenaires Inner Circle
et &lt;a href="http://azure.bewise.fr/"&gt;Azure Circle&lt;/a&gt; toute la journée du 8 février.
&lt;/p&gt;
&lt;p&gt;
Pour retrouver tous les speakers Bewise c’est pas &lt;a href="http://www.bewise.fr/actualite/117/Bewise-aux-TechDay-s.aspx"&gt;là&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=c61c2283-f496-4493-93a6-d2ad42949afd" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,c61c2283-f496-4493-93a6-d2ad42949afd.aspx</comments>
      <category>Techdays 2011</category>
    </item>
    <item>
      <title>Nova by Vertice at Imagina 2011</title>
      <description>&lt;p&gt;
&lt;p&gt;Among our many R&amp;amp;D projects,&amp;nbsp;there is&amp;nbsp;is one that was really fun to develop as part of a Proof Of Concept: the use of &lt;a href="http://www.xbox.com/en-US/kinect" target="_blank"&gt;Microsoft Kinect&lt;/a&gt;. Just have a look to this video (sorry for comments in french):&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[youtube:82ieg_xABzs]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For more information join us on the Vertice Stand at Imagina &lt;img title="Laughing" src="http://blog.vertice.fr/editors/tiny_mce3/plugins/emotions/img/smiley-laughing.gif" border="0" alt="Laughing" /&gt;.&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/27/Nova-by-Vertice-at-Imagina-2011.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/27/Nova-by-Vertice-at-Imagina-2011.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=d091f759-9661-45ad-8c8a-6d41c5adfbb1</guid>
      <pubDate>Thu, 27 Jan 2011 21:04:00 +0100</pubDate>
      <category>Fun</category>
      <category>Imagina</category>
      <category>Plugins</category>
      <category>Programming</category>
      <category>Webcast</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=d091f759-9661-45ad-8c8a-6d41c5adfbb1</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=d091f759-9661-45ad-8c8a-6d41c5adfbb1</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/27/Nova-by-Vertice-at-Imagina-2011.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=d091f759-9661-45ad-8c8a-6d41c5adfbb1</commentRss>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=538b5ba2-d9ec-44e4-b955-4cce26312541</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,538b5ba2-d9ec-44e4-b955-4cce26312541.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,538b5ba2-d9ec-44e4-b955-4cce26312541.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=538b5ba2-d9ec-44e4-b955-4cce26312541</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Depuis bientôt 3 mois que Kinect est sorti, on peut voir sur le web beaucoup d’initiatives
de R&amp;D utilisant ce périphérique. <a href="http://www.vertice.fr/">Vertice</a>,
la petite soeur de Bewise a elle aussi investit un peu de son temps sur Kinect. Il
est maintenant possible de se déplacer dans une scène 3D temps réel Nova grâce à Kinect.
Ajoutez à ça l’écran et les lunettes 3D... :) 
</p>
        <p>
Un petit aperçu ci-dessous :
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3a24d8ac-55aa-4344-9933-3e7b647dac6d" class="wlWriterEditableSmartContent">
          <div id="b393bd3d-7a76-49f4-a07c-2c57a2ce514b" style="margin: 0px; padding: 0px; display: inline;">
            <div>
              <a href="http://www.youtube.com/watch?v=82ieg_xABzs" target="_new">
                <img src="http://benoitlaut.net/content/binary/Windows-Live-Writer/89d80b31a87c_A68D/video479a8d0bd762.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('b393bd3d-7a76-49f4-a07c-2c57a2ce514b'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;540\&quot; height=\&quot;302\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/82ieg_xABzs?hl=en&amp;hd=1\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/82ieg_xABzs?hl=en&amp;hd=1\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;540\&quot; height=\&quot;302\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt="" />
              </a>
            </div>
          </div>
        </div>
        <p>
 
</p>
        <p>
Vertice présentera cette nouveauté au salon <a href="http://www.imagina.mc/2011/content/Accueil/accueilFR.php">Imagina
2011</a> qui se déroulera du 1er au 3 février prochain. Retrouvez également toute
l’actualité Vertice sur <a href="http://blog.vertice.fr/">son blog</a>.
</p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=538b5ba2-d9ec-44e4-b955-4cce26312541" />
      </body>
      <title>Kinect a débarqué à Bewise</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,538b5ba2-d9ec-44e4-b955-4cce26312541.aspx</guid>
      <link>http://benoitlaut.net/2011/01/27/KinectAD%c3%a9barqu%c3%a9%c3%80Bewise.aspx</link>
      <pubDate>Thu, 27 Jan 2011 11:10:54 GMT</pubDate>
      <description>&lt;p&gt;
Depuis bientôt 3 mois que Kinect est sorti, on peut voir sur le web beaucoup d’initiatives
de R&amp;amp;D utilisant ce périphérique. &lt;a href="http://www.vertice.fr/"&gt;Vertice&lt;/a&gt;,
la petite soeur de Bewise a elle aussi investit un peu de son temps sur Kinect. Il
est maintenant possible de se déplacer dans une scène 3D temps réel Nova grâce à Kinect.
Ajoutez à ça l’écran et les lunettes 3D... :) 
&lt;/p&gt;
&lt;p&gt;
Un petit aperçu ci-dessous :
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3a24d8ac-55aa-4344-9933-3e7b647dac6d" class="wlWriterEditableSmartContent"&gt;
&lt;div id="b393bd3d-7a76-49f4-a07c-2c57a2ce514b" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=82ieg_xABzs" target="_new"&gt;&lt;img src="http://benoitlaut.net/content/binary/Windows-Live-Writer/89d80b31a87c_A68D/video479a8d0bd762.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('b393bd3d-7a76-49f4-a07c-2c57a2ce514b'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;540\&amp;quot; height=\&amp;quot;302\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/82ieg_xABzs?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/82ieg_xABzs?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;540\&amp;quot; height=\&amp;quot;302\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Vertice présentera cette nouveauté au salon &lt;a href="http://www.imagina.mc/2011/content/Accueil/accueilFR.php"&gt;Imagina
2011&lt;/a&gt; qui se déroulera du 1er au 3 février prochain. Retrouvez également toute
l’actualité Vertice sur &lt;a href="http://blog.vertice.fr/"&gt;son blog&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=538b5ba2-d9ec-44e4-b955-4cce26312541" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,538b5ba2-d9ec-44e4-b955-4cce26312541.aspx</comments>
      <category>Kinect</category>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=168c6db9-dfa3-4b1e-901d-b36207c076e1</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,168c6db9-dfa3-4b1e-901d-b36207c076e1.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,168c6db9-dfa3-4b1e-901d-b36207c076e1.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=168c6db9-dfa3-4b1e-901d-b36207c076e1</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
L’accès au bureau distant d’une instance Azure est une autre nouveauté de la plateforme.
L’activation peut se configurer depuis Visual Studio au moment du déploiement ou depuis
le portail Azure.
</p>
        <p>
Depuis Visual Studio, lorsque l’on déploie nos services Azure la fenêtre suivante
s’ouvre :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb.png" width="400" height="240" />
          </a>
        </p>
        <p>
Depuis ce wizard, il suffit de cliquer sur le lien “Configure Remote Desktop connections…”,
puis de renseigner le formulaire :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_1.png" width="372" height="369" />
          </a>
        </p>
        <p>
Le premier champ correspond au certificat qui va permettre de crypter le mot de passe.
On peut soit en choisir un dans la liste, soit en créer un. Il suffit ensuite de remplir
les informations de connexion. Une fois ce formulaire rempli, Visual Studio stocke
ces informations dans le fichier ServiceConfiguration.cscg de notre projet Azure :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_18.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_8.png" width="537" height="217" />
          </a>
        </p>
        <p>
Pour qu’Azure puisse de son côté décrypter le mot de passe, il faut déployer le certificat
sur notre “Hosted Service”.
</p>
        <p>
Dans un premier temps, nous allons exporter le certificat. Depuis le wizard de configuration
de l’accès distant, il suffit de cliquer sur le bouton View afin d’afficher le certificat
:
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_2.png" width="328" height="412" />
          </a>
        </p>
        <p>
Dans l’onglet Details, cliquer sur “Copy to File…” pour l’exporter.
</p>
        <p>
Au moment de l’export du certificat ne pas oublier de sélectionner l’option d’export
de la clé privé :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_8.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_3.png" width="369" height="332" />
          </a>
        </p>
        <p>
Une fois le certificat exporté, il ne reste plus qu’à se connecter au portail Azure,
accéder à notre Hosted Service, puis d’y télécharger le certificat :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_4.png" width="378" height="205" />
          </a>
        </p>
        <p>
Après avoir déployé nos rôles sur Azure, il est également possible d’activer/désactiver
et configurer le bureau distant depuis le portail pour chacun des rôles :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_14.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_6.png" width="487" height="221" />
          </a>
        </p>
        <p>
Lorsque nos instances sont démarrées, nous pouvons nous connecter en remote :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_16.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_7.png" width="484" height="220" />
          </a>
        </p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=168c6db9-dfa3-4b1e-901d-b36207c076e1" />
      </body>
      <title>Activer l’accès au bureau distant pour Azure</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,168c6db9-dfa3-4b1e-901d-b36207c076e1.aspx</guid>
      <link>http://benoitlaut.net/2011/01/26/ActiverLacc%c3%a8sAuBureauDistantPourAzure.aspx</link>
      <pubDate>Wed, 26 Jan 2011 12:03:00 GMT</pubDate>
      <description>&lt;p&gt;
L’accès au bureau distant d’une instance Azure est une autre nouveauté de la plateforme.
L’activation peut se configurer depuis Visual Studio au moment du déploiement ou depuis
le portail Azure.
&lt;/p&gt;
&lt;p&gt;
Depuis Visual Studio, lorsque l’on déploie nos services Azure la fenêtre suivante
s’ouvre :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb.png" width="400" height="240"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Depuis ce wizard, il suffit de cliquer sur le lien “Configure Remote Desktop connections…”,
puis de renseigner le formulaire :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_1.png" width="372" height="369"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Le premier champ correspond au certificat qui va permettre de crypter le mot de passe.
On peut soit en choisir un dans la liste, soit en créer un. Il suffit ensuite de remplir
les informations de connexion. Une fois ce formulaire rempli, Visual Studio stocke
ces informations dans le fichier ServiceConfiguration.cscg de notre projet Azure :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_18.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_8.png" width="537" height="217"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Pour qu’Azure puisse de son côté décrypter le mot de passe, il faut déployer le certificat
sur notre “Hosted Service”.
&lt;/p&gt;
&lt;p&gt;
Dans un premier temps, nous allons exporter le certificat. Depuis le wizard de configuration
de l’accès distant, il suffit de cliquer sur le bouton View afin d’afficher le certificat
:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_2.png" width="328" height="412"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dans l’onglet Details, cliquer sur “Copy to File…” pour l’exporter.
&lt;/p&gt;
&lt;p&gt;
Au moment de l’export du certificat ne pas oublier de sélectionner l’option d’export
de la clé privé :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_3.png" width="369" height="332"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Une fois le certificat exporté, il ne reste plus qu’à se connecter au portail Azure,
accéder à notre Hosted Service, puis d’y télécharger le certificat :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_4.png" width="378" height="205"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Après avoir déployé nos rôles sur Azure, il est également possible d’activer/désactiver
et configurer le bureau distant depuis le portail pour chacun des rôles :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_14.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_6.png" width="487" height="221"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Lorsque nos instances sont démarrées, nous pouvons nous connecter en remote :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_16.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Activer-laccs-au-bureau-distant_C02D/image_thumb_7.png" width="484" height="220"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=168c6db9-dfa3-4b1e-901d-b36207c076e1" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,168c6db9-dfa3-4b1e-901d-b36207c076e1.aspx</comments>
      <category>Azure</category>
    </item>
    <item>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://benoitlaut.net/Trackback.aspx?guid=10372dca-0fac-4106-9f97-71c8b7e35748</ping>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/pingback.aspx</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://benoitlaut.net/PermaLink,guid,10372dca-0fac-4106-9f97-71c8b7e35748.aspx</target>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Benoît Laut</creator>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/CommentView,guid,10372dca-0fac-4106-9f97-71c8b7e35748.aspx</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://benoitlaut.net/SyndicationService.asmx/GetEntryCommentsRss?guid=10372dca-0fac-4106-9f97-71c8b7e35748</commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Si vous avez suivi l’actualité d’Azure, vous avez pu voir que Microsoft avait annoncé
que les fonctionnalités d’IIS seraient disponible au niveau des Web Role. Nous pouvons
donc configurer notre Web Role afin d’y définir les sites, répertoires virtuels ou
encore les applications comme nous le souhaitons.
</p>
        <p>
A l’ajout d’un projet Azure à notre solution Visual Studio, nous allons choisir de
déployer un Web Role.
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/AddWebRole.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AddWebRole" border="0" alt="AddWebRole" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/AddWebRole_thumb.png" width="569" height="357" />
          </a>
        </p>
        <p>
Nous allons ajouter 2 sites web supplémentaires à notre solution.
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/Solution.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Solution" border="0" alt="Solution" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/Solution_thumb.png" width="361" height="243" />
          </a>
        </p>
        <p>
Examinons maintenant le fichier ServiceDefinition.csdef de notre projet Azure :
</p>
        <div class="csharpcode">
          <pre class="code">
            <span style="color: blue">&lt;</span>
            <span style="color: #a31515">ServiceDefinition </span>
            <span style="color: red">name</span>
            <span style="color: blue">=</span>"<span style="color: blue">AzureProject</span>" <span style="color: red">xmlns</span><span style="color: blue">=</span>"<span style="color: blue">http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">WebRole </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">WebRoleSample</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Sites</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Site </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Web</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Bindings</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Binding </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint1</span>" <span style="color: red">endpointName</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint1</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Bindings</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Site</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Sites</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Endpoints</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">InputEndpoint </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint1</span>" <span style="color: red">protocol</span><span style="color: blue">=</span>"<span style="color: blue">http</span>" <span style="color: red">port</span><span style="color: blue">=</span>"<span style="color: blue">80</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Endpoints</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Imports</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Import </span><span style="color: red">moduleName</span><span style="color: blue">=</span>"<span style="color: blue">Diagnostics</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Imports</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">WebRole</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">ServiceDefinition</span><span style="color: blue">&gt; </span></pre>
        </div>
        <p>
          <font size="2" face="Consolas"></font> 
</p>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
Dans ce fichier, on peut voir la définition de notre Web Role. 
</p>
        <p>
Il contient un site nommé “Web” disponible en http sur le port 80. Nous pouvons observer
que l’élément xml Site possède comme élément parent “Sites”. Nous allons définir nos
autres sites de cette manière :
</p>
        <pre class="code">
          <span style="color: blue">&lt;</span>
          <span style="color: #a31515">ServiceDefinition </span>
          <span style="color: red">name</span>
          <span style="color: blue">=</span>"<span style="color: blue">AzureProject</span>" <span style="color: red">xmlns</span><span style="color: blue">=</span>"<span style="color: blue">http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">WebRole </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">WebRoleSample</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Sites</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Site </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Web</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">VirtualDirectory </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Images</span>" <span style="color: red">physicalDirectory</span><span style="color: blue">=</span>"<span style="color: blue">../PremierSiteWeb/Img</span>"<span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">VirtualDirectory</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Bindings</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Binding </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint1</span>" <span style="color: red">endpointName</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint1</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Bindings</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Site</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Site </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">PremierSite</span>" <span style="color: red">physicalDirectory</span><span style="color: blue">=</span>"<span style="color: blue">../PremierSiteWeb</span>"<span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">VirtualApplication </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">SecondSite</span>" <span style="color: red">physicalDirectory</span><span style="color: blue">=</span>"<span style="color: blue">../SecondSiteWeb</span>"<span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">VirtualApplication</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Bindings</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Binding </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint2</span>" <span style="color: red">endpointName</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint2</span>"<span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Bindings</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Site</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">Sites</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Endpoints</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">InputEndpoint </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint1</span>" <span style="color: red">protocol</span><span style="color: blue">=</span>"<span style="color: blue">http</span>" <span style="color: red">port</span><span style="color: blue">=</span>"<span style="color: blue">80</span>" <span style="color: blue">/&gt;
&lt;</span><span style="color: #a31515">InputEndpoint </span><span style="color: red">name</span><span style="color: blue">=</span>"<span style="color: blue">Endpoint2</span>" <span style="color: red">protocol</span><span style="color: blue">=</span>"<span style="color: blue">http</span>" <span style="color: red">port</span><span style="color: blue">=</span>"<span style="color: blue">81</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Endpoints</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Imports</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">Import </span><span style="color: red">moduleName</span><span style="color: blue">=</span>"<span style="color: blue">Diagnostics</span>" <span style="color: blue">/&gt;
&lt;/</span><span style="color: #a31515">Imports</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">WebRole</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">ServiceDefinition</span><span style="color: blue">&gt; </span></pre>
        <p>
 
</p>
        <p>
Dans le premier, nous avons ajouté un répertoire virtuel “Images” qui pointe sur le
répertoire “../PremierSiteWeb/Img”. Nous avons ensuite déployé le site PremierSiteWeb
en http sur le port 81. Puis dans ce site, nous avons défini une application virtuelle
qui pointe sur le projet SecondSiteWeb. Lorsque nous déployons localement notre web
role (F5), 2 navigateurs s’ouvrent sur les 2 sites. Si nous ouvrons la console d’administration
d’IIS, nous retrouvons les 2 sites, le répertoire virtuel, ainsi que l’application
:
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/IIS.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IIS" border="0" alt="IIS" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/IIS_thumb.png" width="388" height="465" />
          </a>
        </p>
        <p>
Ici mon IIS local possède déjà un site sur le port 80. Pour le déploiement local,
Visual Studio a publié mes sites sur les ports 81 et 82.
</p>
        <p>
Après avoir déployé notre Web Role sur Azure, nous pouvons nous connecter en remote
desktop à notre VM Azure, accéder au serveur IIS et vérifier que nos 2 sites ont bien
été déployés :
</p>
        <p>
          <a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/image_thumb.png" width="338" height="472" />
          </a>
        </p>
        <img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=10372dca-0fac-4106-9f97-71c8b7e35748" />
      </body>
      <title>Configurer plusieurs sites sur un même Web Role Azure</title>
      <guid isPermaLink="false">http://benoitlaut.net/PermaLink,guid,10372dca-0fac-4106-9f97-71c8b7e35748.aspx</guid>
      <link>http://benoitlaut.net/2011/01/23/ConfigurerPlusieursSitesSurUnM%c3%aameWebRoleAzure.aspx</link>
      <pubDate>Sun, 23 Jan 2011 12:36:27 GMT</pubDate>
      <description>&lt;p&gt;
Si vous avez suivi l’actualité d’Azure, vous avez pu voir que Microsoft avait annoncé
que les fonctionnalités d’IIS seraient disponible au niveau des Web Role. Nous pouvons
donc configurer notre Web Role afin d’y définir les sites, répertoires virtuels ou
encore les applications comme nous le souhaitons.
&lt;/p&gt;
&lt;p&gt;
A l’ajout d’un projet Azure à notre solution Visual Studio, nous allons choisir de
déployer un Web Role.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/AddWebRole.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AddWebRole" border="0" alt="AddWebRole" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/AddWebRole_thumb.png" width="569" height="357"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nous allons ajouter 2 sites web supplémentaires à notre solution.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/Solution.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Solution" border="0" alt="Solution" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/Solution_thumb.png" width="361" height="243"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Examinons maintenant le fichier ServiceDefinition.csdef de notre projet Azure :
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ServiceDefinition &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;AzureProject&lt;/span&gt;" &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;WebRole &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;WebRoleSample&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Sites&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Site &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Web&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Bindings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint1&lt;/span&gt;" &lt;span style="color: red"&gt;endpointName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint1&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Bindings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Site&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Sites&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Endpoints&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;InputEndpoint &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint1&lt;/span&gt;" &lt;span style="color: red"&gt;protocol&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http&lt;/span&gt;" &lt;span style="color: red"&gt;port&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;80&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Endpoints&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Imports&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Import &lt;/span&gt;&lt;span style="color: red"&gt;moduleName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Diagnostics&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Imports&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;WebRole&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;font size="2" face="Consolas"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
Dans ce fichier, on peut voir la définition de notre Web Role. 
&lt;/p&gt;
&lt;p&gt;
Il contient un site nommé “Web” disponible en http sur le port 80. Nous pouvons observer
que l’élément xml Site possède comme élément parent “Sites”. Nous allons définir nos
autres sites de cette manière :
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ServiceDefinition &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;AzureProject&lt;/span&gt;" &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;WebRole &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;WebRoleSample&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Sites&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Site &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Web&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;VirtualDirectory &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Images&lt;/span&gt;" &lt;span style="color: red"&gt;physicalDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;../PremierSiteWeb/Img&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;VirtualDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Bindings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint1&lt;/span&gt;" &lt;span style="color: red"&gt;endpointName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint1&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Bindings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Site&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Site &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;PremierSite&lt;/span&gt;" &lt;span style="color: red"&gt;physicalDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;../PremierSiteWeb&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;VirtualApplication &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;SecondSite&lt;/span&gt;" &lt;span style="color: red"&gt;physicalDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;../SecondSiteWeb&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;VirtualApplication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Bindings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint2&lt;/span&gt;" &lt;span style="color: red"&gt;endpointName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint2&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Bindings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Site&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Sites&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Endpoints&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;InputEndpoint &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint1&lt;/span&gt;" &lt;span style="color: red"&gt;protocol&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http&lt;/span&gt;" &lt;span style="color: red"&gt;port&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;80&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;InputEndpoint &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Endpoint2&lt;/span&gt;" &lt;span style="color: red"&gt;protocol&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http&lt;/span&gt;" &lt;span style="color: red"&gt;port&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;81&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Endpoints&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Imports&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Import &lt;/span&gt;&lt;span style="color: red"&gt;moduleName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Diagnostics&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Imports&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;WebRole&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Dans le premier, nous avons ajouté un répertoire virtuel “Images” qui pointe sur le
répertoire “../PremierSiteWeb/Img”. Nous avons ensuite déployé le site PremierSiteWeb
en http sur le port 81. Puis dans ce site, nous avons défini une application virtuelle
qui pointe sur le projet SecondSiteWeb. Lorsque nous déployons localement notre web
role (F5), 2 navigateurs s’ouvrent sur les 2 sites. Si nous ouvrons la console d’administration
d’IIS, nous retrouvons les 2 sites, le répertoire virtuel, ainsi que l’application
:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/IIS.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IIS" border="0" alt="IIS" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/IIS_thumb.png" width="388" height="465"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Ici mon IIS local possède déjà un site sur le port 80. Pour le déploiement local,
Visual Studio a publié mes sites sur les ports 81 et 82.
&lt;/p&gt;
&lt;p&gt;
Après avoir déployé notre Web Role sur Azure, nous pouvons nous connecter en remote
desktop à notre VM Azure, accéder au serveur IIS et vérifier que nos 2 sites ont bien
été déployés :
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://benoitlaut.net/content/binary/Windows-Live-Writer/Dployer-plusieurs-sites_AA9F/image_thumb.png" width="338" height="472"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://benoitlaut.net/aggbug.ashx?id=10372dca-0fac-4106-9f97-71c8b7e35748" /&gt;</description>
      <comments>http://benoitlaut.net/CommentView,guid,10372dca-0fac-4106-9f97-71c8b7e35748.aspx</comments>
      <category>Azure</category>
    </item>
    <item>
      <title>Q and A on Change State (Excel) custom action</title>
      <description>&lt;p&gt;First of all I just want to thank you all readers of this blog. I received many questions about this new custom action and I decided to share my answers.&amp;nbsp;Thank you very much for your support, it is an encouragement for me to do even better!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: Fred, thank you for this new cool free feature. I'm a developer and I will be very interested to have a look to your code. 
&lt;ul&gt;
&lt;li&gt;Well it's not possible for security reason since this code will be partially included in Nova Studio 2011 with more features. But technically it's mainly based on Excel open source provider and .NET reflection for the job.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: does this custom action will work on prior version to 6.0.0.26? 
&lt;ul&gt;
&lt;li&gt;No&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: why? 
&lt;ul&gt;
&lt;li&gt;In fact, we did a small evolution in the Nova SDK by adding a property on the Nova Scene to merge on the fly all scene entities into a single generic collection called NovaIDs. The new custom action uses this new property.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: why don't you manage custom type assisgnement such as Vector3, enumerated types, ... ? 
&lt;ul&gt;
&lt;li&gt;Well, maybe you will have to wait for Nova Studio 2011 for that &lt;img title="Wink" src="http://blog.vertice.fr/editors/tiny_mce3/plugins/emotions/img/smiley-wink.gif" border="0" alt="Wink" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: why can't we edit the preview grid to change values? 
&lt;ul&gt;
&lt;li&gt;Well, maybe you will have to wait for Nova Studio 2011 for that &lt;img title="Wink" src="http://blog.vertice.fr/editors/tiny_mce3/plugins/emotions/img/smiley-wink.gif" border="0" alt="Wink" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: and what about a database to store input value? 
&lt;ul&gt;
&lt;li&gt;Well, technically all is possible with .NET Framework and if you are interested, why not to develop this new custom action on an open source model and to diffuse it with &lt;a href="http://www.codeplex.com/" target="_blank"&gt;Codeplex&lt;/a&gt;? I don't want to manage this project but i can participate on functional and technical specifications, ergonomics, design and tests. I think with&amp;nbsp;one project leader,&amp;nbsp;one or two&amp;nbsp;developers and with me for reviews, it will be enough. So who wants to participate? &lt;img title="Tongue out" src="http://blog.vertice.fr/editors/tiny_mce3/plugins/emotions/img/smiley-tongue-out.gif" border="0" alt="Tongue out" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: what about performance of this&amp;nbsp;new&amp;nbsp;custom action? 
&lt;ul&gt;
&lt;li&gt;Well, you should avoid to call this custom action on the trigger on every frame! Indeed, even if I always&amp;nbsp;try to optimize my code, there is no cache for this first version. To read a file may be fast, but if there are too many records it may become longer. In other terms choose corrrectly the right trigger and the update frequency. I will make a parallel with development processes: even if action builder is done for graphic artist and art director and even if it's very easy to use, you should always try to think before on how to implement a solution inside the action builder.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: why are there so few widgets in the Action Builder? 
&lt;ul&gt;
&lt;li&gt;Well, to be completely honest, this is mainly due to time. In fact, &lt;span id="result_box" lang="en"&gt;&lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;I'&lt;/span&gt;&lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;m&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;an&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;avid&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;proponents&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;of&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;ergonomics&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;and&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;for me&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;the future is&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;possible&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;in&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;the immersion &lt;/span&gt;&lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;of&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;HMI&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;in&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;3D scenes&lt;/span&gt;&lt;span title="Cliquer ici pour voir d'autres traductions"&gt;.&lt;/span&gt; B&lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;&lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;ut&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;that's another&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;story&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;that&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;deserves&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;a&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;more substantial&lt;/span&gt; &lt;span class="hps" title="Cliquer ici pour voir d'autres traductions"&gt;post!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: who developed the icon of this new custom action? 
&lt;ul&gt;
&lt;li&gt;Graphic Design is a full-time job that I willingly leave it to the professionals! &lt;a href="http://www.michelrousseau.com/" target="_blank"&gt;Michel Rousseau&lt;/a&gt; did the job. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thank you for all your questions. Again, if you are interested to participate to Nova Community, remember you can do it&amp;nbsp;on our &lt;a href="http://www.vertice.fr/Forum/" target="_blank"&gt;forums&lt;/a&gt; by helping users and developers and&amp;nbsp;through Vertice &lt;a href="http://wiki.vertice.fr" target="_blank"&gt;wiki&lt;/a&gt;.&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/19/Q-and-A-on-Change-State-(Excel)-custom-action.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/19/Q-and-A-on-Change-State-(Excel)-custom-action.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=1ea3a54e-0abc-4056-b5fe-e8719e4ded71</guid>
      <pubDate>Wed, 19 Jan 2011 07:25:00 +0100</pubDate>
      <category>Nova Studio</category>
      <category>Programming</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=1ea3a54e-0abc-4056-b5fe-e8719e4ded71</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=1ea3a54e-0abc-4056-b5fe-e8719e4ded71</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/19/Q-and-A-on-Change-State-(Excel)-custom-action.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=1ea3a54e-0abc-4056-b5fe-e8719e4ded71</commentRss>
    </item>
    <item>
      <title>Custom action: Change State (Excel)</title>
      <description>&lt;p&gt;As I announced it&amp;nbsp;in this previous &lt;a href="http://blog.vertice.fr/post/2011/01/10/Actions-Builder-A-new-Custom-Action-Change-State-(Excel).aspx" target="_blank"&gt;post&lt;/a&gt;, here is the new custom action I called "Change State (Excel). I made some modifications I'm sure you will appreciate &lt;img title="Smile" src="http://blog.vertice.fr/editors/tiny_mce3/plugins/emotions/img/smiley-smile.gif" border="0" alt="Smile" /&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.vertice.fr/image.axd?picture=2011%2f1%2fCustomAction0002.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;You have to know these possibilities and constraints:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;All cells must be in a string format ('4 as an example)&lt;/li&gt;
&lt;li&gt;You can choose the Worksheet number. &lt;/li&gt;
&lt;li&gt;I remove the constraint to have "Jet oledb provider 4.0" installed on your computer. In other terms, this custom action &lt;span&gt;is completely autonomous and no longer depends on anything.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;On numeric properties, you can now add an operator&amp;nbsp;to indicate to add, substract, multiply and divide. As an example, on RotationVectorX, you can write '++1 to add 1 to the current property value of the selected Nova Entity. Imagine what you can do if you plug this action to the "Every x Frames" trigger &lt;img title="Surprised" src="http://blog.vertice.fr/editors/tiny_mce3/plugins/emotions/img/smiley-surprised.gif" border="0" alt="Surprised" /&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Right now, I only manage Int, Float, Boolean, RGBA properties of Nova Entities&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;By Nova Entities, I exhaustively mean:&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Nova Paths, Nova Domains, Nova Groups, Nova Materials, Nova Textures, Nova Objects, Nova Cameras and Nova Lights&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attached to the post,&amp;nbsp;you'll find a zip file containing a dll and a Excel sample (j&lt;span&gt;ust pay attention to Windows language and region for&amp;nbsp;numeric values inside the Excel file)&lt;/span&gt;. To install the custom action, just drop the dll inside:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;"C:\Program Files\Vertice\Nova Studio 2010\Plugins" for 32 bits OS&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;"C:\Program Files\Vertice\Nova Studio 2010\x64\Plugins" for&amp;nbsp;64 bits OS&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Don't forget to install Nova Studio 2010 version &lt;strong&gt;6.0.0.26&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.vertice.fr/file.axd?file=2011%2f1%2fChangeStateFromExcel.zip"&gt;ChangeStateFromExcel.zip (30.33 kb)&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/17/Custom-action-Change-State-(Excel).aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/17/Custom-action-Change-State-(Excel).aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=9aac7630-e865-46d8-bd4a-9352a6f0eb5f</guid>
      <pubDate>Mon, 17 Jan 2011 09:10:00 +0100</pubDate>
      <category>Community</category>
      <category>General</category>
      <category>Nova Studio</category>
      <category>Programming</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=9aac7630-e865-46d8-bd4a-9352a6f0eb5f</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=9aac7630-e865-46d8-bd4a-9352a6f0eb5f</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/17/Custom-action-Change-State-(Excel).aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=9aac7630-e865-46d8-bd4a-9352a6f0eb5f</commentRss>
    </item>
    <item>
      <title>Nova by Vertice at Imagina 2011</title>
      <description>&lt;div class="text"&gt;
&lt;p&gt;Imagina 2011 is the European 3D simulation and visualization &lt;a href="http://www.imagina.mc/2011/content/Home/homeUK.php" target="_blank"&gt;event&lt;/a&gt;.&amp;nbsp;It will take place in Monaco from February, 1th to February, 3th. The Vertice Team will hold the stand &lt;strong&gt;A16b&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.vertice.fr/image.axd?picture=2011%2f1%2fImagina2011.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;It will be a great pleasure for all my team to welcome you on board!&amp;nbsp;Feel free to come to talk with us on the following topics: interactive 3D and graphics with Michel Rousseau (Art Director), interactive 3D and sales with Sebastien Callens (Marketing and Sales)&amp;nbsp;and&amp;nbsp;.NET development for Nova 2010 with myself (COO).&lt;/p&gt;
&lt;p&gt;Hope to see you at Monaco in early February.&lt;/p&gt;
&lt;/div&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/16/Nova-by-Vertice-at-Imagina-2011.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/16/Nova-by-Vertice-at-Imagina-2011.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=7618ca62-a3ac-4b7f-8c6f-eb87cb2d3d0c</guid>
      <pubDate>Sun, 16 Jan 2011 15:24:00 +0100</pubDate>
      <category>General</category>
      <category>Imagina</category>
      <category>Nova Studio</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=7618ca62-a3ac-4b7f-8c6f-eb87cb2d3d0c</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=7618ca62-a3ac-4b7f-8c6f-eb87cb2d3d0c</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/16/Nova-by-Vertice-at-Imagina-2011.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=7618ca62-a3ac-4b7f-8c6f-eb87cb2d3d0c</commentRss>
    </item>
    <item>
      <title>Nova Studio 2010 - Update 7</title>
      <description>&lt;p&gt;It's our pleasure to present to you our last Nova Studio 2010 revision.&amp;nbsp;The complete version number&amp;nbsp;is 6.0.0.26.&lt;/p&gt;
&lt;h3&gt;Functionalities:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Colorized mode support for Autodesk Revit 2011&lt;/strong&gt;: the Nova Studio add-in is now registered on Autodesk Revit 2011 and support white rendering and colorized rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nova templates for Visual Studio 2010&lt;/strong&gt;: 8 templates are available, if Visual Studio 2010 is installed in Professional/Premium/Ultimate edition, to enhance Nova Studio, Controls or SDK features. C# and VB are supported. Here is the list of installed templates:
&lt;ul&gt;
&lt;li&gt;Nova Controls Windows Forms Application
&lt;ul&gt;
&lt;li&gt;A project to create a Windows Forms application that uses Nova Controls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova SDK Windows Forms Application
&lt;ul&gt;
&lt;li&gt;A project to create a Windows Forms application that uses Nova SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova SDK WPF Application
&lt;ul&gt;
&lt;li&gt;A project to create a WPF application that uses Nova SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Control Plugin
&lt;ul&gt;
&lt;li&gt;A project to create a control plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Custom Action Plugin
&lt;ul&gt;
&lt;li&gt;project to create a custom action plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Exporter Plugin
&lt;ul&gt;
&lt;li&gt;A project to create an exporter plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Importer Plugin
&lt;ul&gt;
&lt;li&gt;A project to create an importer plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio UI Plugin
&lt;ul&gt;
&lt;li&gt;A project to create an user interface plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blurred mirrors&lt;/strong&gt;: the mirror function applied to plans can now be blurred with an intensity and a level. It permits to obtain real-time reflections like &amp;laquo; polished concrete &amp;raquo; or &amp;laquo; wood varnish &amp;raquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Corrections:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Update for the problem of double click in Nova Control&lt;/li&gt;
&lt;li&gt;Update for the problem of pickable objects in disabled companion scene&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/13/Nova-Studio-2010-Update-7.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/13/Nova-Studio-2010-Update-7.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=1044147b-aaf0-4166-a8d3-0362d22f04f7</guid>
      <pubDate>Thu, 13 Jan 2011 13:56:00 +0100</pubDate>
      <category>General</category>
      <category>Nova Studio</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=1044147b-aaf0-4166-a8d3-0362d22f04f7</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=1044147b-aaf0-4166-a8d3-0362d22f04f7</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/13/Nova-Studio-2010-Update-7.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=1044147b-aaf0-4166-a8d3-0362d22f04f7</commentRss>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-6800684000140576266</guid>
      <pubDate>Tue, 11 Jan 2011 16:21:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-01-11T17:21:30.201+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">.NET</category>
      <category domain="http://www.blogger.com/atom/ns#">Regex</category>
      <title>Les assertions dans les expressions régulières</title>
      <description>&lt;p&gt;Bonjour tout le monde !&lt;/p&gt;  &lt;p&gt;Me voilà de retour pour une nouvelle année de blogging, qu’on espère tous plus chargée que la précédente, mais connaissant ma flemme légendaire, c’est pas gagné.   &lt;br /&gt;Afin de ne pas passer pour un rustre, je vous souhaite quand même à tous une excellente année 2011, mais on va passer rapidement les voeux, parce que mine de rien, on a du boulot.&lt;/p&gt;  &lt;p&gt;Aujourd’hui, cours de Regex, on va voir les assertions.&lt;/p&gt;  &lt;p&gt;Je suppose beaucoup de monde connait déjà les Regex, et sais en faire un usage basique pour faire des recherches ou remplacements dans une chaine de caractères. Mais tout le monde ne connait pas forcément, ou ne sait pas utiliser les assertions. Nous allons donc remédier à ça ensemble.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Le besoin :&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;J’ai une chaine de caractères dans laquelle je veux remplacer toutes les occurrences d’une apostrophe suivie d’un caractère alphanumérique.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;La première solution (dite « du noob »):&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;1- On fait une recherche d’une apostrophe suivie d’un caractère alphanum:   &lt;br /&gt;&lt;b&gt;'[a-z0-9]&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2- On remplace par notre valeur   &lt;br /&gt;Regex.Replace(texte, @&amp;quot;&lt;b&gt;'[a-z0-9]&lt;/b&gt;&amp;quot;, @&amp;quot;&lt;b&gt;&amp;amp;apos;&lt;/b&gt;&amp;quot;);&lt;/p&gt;  &lt;p&gt;3- On se rend compte qu’on a effacé le caractère suivant, et on se débrouille pour le récupérer afin de le réafficher   &lt;br /&gt;Regex.Replace(texte, @&amp;quot;&lt;b&gt;'([a-z0-9])&lt;/b&gt;&amp;quot;, @&amp;quot;&lt;b&gt;&amp;amp;apos;$1&lt;/b&gt;&amp;quot;);&lt;/p&gt;  &lt;p&gt;Alors ça fonctionne, oui, mais c’est tout moche. On va faire autrement&lt;/p&gt;  &lt;p&gt;&lt;u&gt;La solution qui roxxe&amp;#160; (ou « la Lacasa’s ») :&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;1- On utilise une assertion pour trouver nos apostrophes :   &lt;br /&gt;&lt;b&gt;'(?=[a-z0-9])&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;2- On fait notre remplacement   &lt;br /&gt;Regex.Replace(texte, @&amp;quot;&lt;b&gt;'(?=[a-z0-9])&lt;/b&gt;&amp;quot;, @&amp;quot;&lt;b&gt;&amp;amp;apos;&lt;/b&gt;&amp;quot;);&lt;/p&gt;  &lt;p&gt;Et cette fois, ça fonctionne aussi, mais en plus propre et plus performant.&lt;/p&gt;  &lt;p&gt;La différence entre les 2 solutions :&lt;/p&gt;  &lt;p&gt;Dans le premier cas, notre pattern comprend une apostrophe, et le caractère se trouvant après. Si on fait un remplacement, le pattern a récupéré 2 caractères et les remplace tous les deux ; ce qui nous oblige à faire une capture sur le second caractère pour pouvoir le remettre (le $1).&lt;/p&gt;  &lt;p&gt;Dans le second cas, nous avons une assertion qui va lire le second caractère, mais n’en tient pas compte pour le motif. L’assertion qui s’écrit avec ?= permets de dire « je veux que mon apostrophe soit suivie d’un caractère alphanum, mais je ne veux QUE l’apostrophe ».&lt;/p&gt;  &lt;p&gt;Nous avons plusieurs types d’assertions :&lt;/p&gt;  &lt;p&gt;- Les assertions avant ou arrière (pour dire si on cherche quelque chose qui suit ou qui précède notre apostrophe)&lt;/p&gt;  &lt;p&gt;- Les assertions positives ou négatives (pour dire si on cherche un quelque chose qui suit, ou quelque chose qui ne doit pas être là. On utilisera par exemple une assertion négative si on veut toutes les apostrophes qui ne sont pas précédé d’un “=”)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Syntaxe :     &lt;br /&gt;&lt;/b&gt;&lt;b&gt;Assertion avant positive&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (?=motif)     &lt;br /&gt;&lt;/b&gt;&lt;b&gt;Assertion avant negative&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (?!motif)     &lt;br /&gt;Assertion arrière positive&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (?&amp;lt;=motif)      &lt;br /&gt;&lt;/b&gt;&lt;b&gt;Assertion arrière négative&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (?&amp;lt;!motif) &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Donc si je veux les apostrophes non précédées d’un =, je ferai ça :   &lt;br /&gt;Regex.Replace(texte, @&amp;quot;&lt;b&gt;(?&amp;lt;!=)'&lt;/b&gt;&amp;quot;, @&amp;quot;&lt;b&gt;&amp;amp;apos;&lt;/b&gt;&amp;quot;);&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-6800684000140576266?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2011/01/les-assertions-dans-les-expressions.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title>A new custom action for actions builder: Change State (Excel)</title>
      <description>&lt;p&gt;With the upcoming revision of Nova Studio 2010 (6.0.0.26) and in order to illustrate the Custom Action developing template, I decided to develop a new feature to extend Nova Studio 2010 actions in the Actions Builder tool.&lt;/p&gt;
&lt;p&gt;I called it Change State (Excel). Sometimes in your Nova Scene, you need to change on the fly some of Nova entities' properties. This new Custom Action will allow that kind of modification on simple type properties such as float, int and string as a example. So from a simple Excel file, you will have just to define&amp;nbsp;the entity guid ("Id" column) or entity name ("Name" column)&amp;nbsp;to be modified and all needed properties names in other columns as shown below:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.vertice.fr/image.axd?picture=2011%2f1%2fCaptureExcel0001.PNG" alt="" width="678" height="128" /&gt;&lt;/p&gt;
&lt;p&gt;Some important rules to well understand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jet oledb provider 4.0 must be installed on your computer (the custom action will check that),&lt;/li&gt;
&lt;li&gt;The custom action will work only on&amp;nbsp;the first Worksheet of the Excel workbook,&lt;/li&gt;
&lt;li&gt;It will work on all Nova Entities (objects, cameras, lights, Scene, Domains, ...),&lt;/li&gt;
&lt;li&gt;The First line always contains the column name,&lt;/li&gt;
&lt;li&gt;if "Id" is provided, "Name" is not taken into account,&lt;/li&gt;
&lt;li&gt;if "Name" is provided (and "Id" not provided) all entities with the same name are taken into account,&lt;/li&gt;
&lt;li&gt;A column without any value is not taken into account,&lt;/li&gt;
&lt;li&gt;You can put the property name you want since the process is dynamic,&lt;/li&gt;
&lt;li&gt;Only simple value types are taken into account (Except RGBAColor type as shown before on Ambiant Color as an example).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a small screenshot of this&amp;nbsp;new feature:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://blog.vertice.fr/image.axd?picture=2011%2f1%2fCaptureNABCSExcel.PNG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The checkbox "File is side by side to scene in running mode" means that while executing the custom action, the file path will be calculated according to the Nova Scene path and not the original path. In design mode, the checkbox is not taken into account and only the previous complete path is used.&lt;/p&gt;
&lt;p&gt;This new custom action will not be included in 6.0.0.26 version&amp;nbsp;install, but in a next post, I will explain you&amp;nbsp;how to install it.&lt;/p&gt;
&lt;p&gt;Stay tuned!&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/10/Actions-Builder-A-new-Custom-Action-Change-State-(Excel).aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/10/Actions-Builder-A-new-Custom-Action-Change-State-(Excel).aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=a6e32859-02a2-4044-aab3-def55f411cfe</guid>
      <pubDate>Mon, 10 Jan 2011 21:43:00 +0100</pubDate>
      <category>Community</category>
      <category>Nova Studio</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=a6e32859-02a2-4044-aab3-def55f411cfe</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=a6e32859-02a2-4044-aab3-def55f411cfe</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/10/Actions-Builder-A-new-Custom-Action-Change-State-(Excel).aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=a6e32859-02a2-4044-aab3-def55f411cfe</commentRss>
    </item>
    <item>
      <title>Nova templates for Visual Studio 2010</title>
      <description>&lt;p&gt;Maybe you develop with Nova 2010. To help you&amp;nbsp;with this task, we've just released&amp;nbsp;new templates&amp;nbsp;(C#&amp;nbsp;and VB.NET) for Visual Studio 2010.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://i4.visualstudiogallery.msdn.microsoft.com/en-us/dab3c548-a0e4-49e1-b20f-86647a5394a5/image/file/44061/3/screenshot.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;To install them, 2 solutions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/dab3c548-a0e4-49e1-b20f-86647a5394a5?SRC=Home" target="_blank"&gt;Visual Studio 2010 gallery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Just install our next release of Nova Studio 2010 (6.0.0.26)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Automatic updates for these templates inside Visual Studio 2010 are managed. You will find 8 templates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nova Controls Windows Forms Application 
&lt;ul&gt;
&lt;li&gt;A project to create a Windows Forms application that uses Nova Controls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova SDK Windows Forms Application 
&lt;ul&gt;
&lt;li&gt;A project to create a Windows Forms application that uses Nova SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova SDK WPF Application 
&lt;ul&gt;
&lt;li&gt;A project to create a WPF application that uses Nova SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Control Plugin 
&lt;ul&gt;
&lt;li&gt;A project to create a control plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Custom Action Plugin 
&lt;ul&gt;
&lt;li&gt;A project to create a custom action plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Exporter Plugin 
&lt;ul&gt;
&lt;li&gt;A project to create an exporter plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio Importer Plugin 
&lt;ul&gt;
&lt;li&gt;A project to create an importer plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nova Studio UI Plugin 
&lt;ul&gt;
&lt;li&gt;A project to create an user interface plugin for Nova Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <link>http://blog.vertice.fr/post/2011/01/10/Nova-templates-for-Visual-Studio-2010.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2011/01/10/Nova-templates-for-Visual-Studio-2010.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=b55a8886-e751-4854-bfd4-7095a0aac2d2</guid>
      <pubDate>Mon, 10 Jan 2011 11:36:00 +0100</pubDate>
      <category>Nova SDK</category>
      <category>Nova Studio</category>
      <category>Programming</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=b55a8886-e751-4854-bfd4-7095a0aac2d2</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=b55a8886-e751-4854-bfd4-7095a0aac2d2</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2011/01/10/Nova-templates-for-Visual-Studio-2010.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=b55a8886-e751-4854-bfd4-7095a0aac2d2</commentRss>
    </item>
    <item>
      <title>Merry Christmas</title>
      <description>&lt;p&gt;I'm quite sure that during this period, you will appreciate gifts. That's why we offer special prices for those who will decide to migrate to Nova 2010:&lt;/p&gt;
&lt;p&gt;Migrate at half price to Nova Studio! You own a license of a competitor of Nova Studio that doesn't answer your needs?&lt;/p&gt;
&lt;p&gt;Then do change for Nova Studio Ultimate for as low as the price of an upgrade, only 1745&amp;euro; excl. VAT!&lt;/p&gt;
&lt;p&gt;Please contact &lt;a href="mailto:sebastien.callens@vertice.fr" target="_blank"&gt;Sebastien Callens&lt;/a&gt; to know the conditions and the eligible products.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <link>http://blog.vertice.fr/post/2010/12/25/Merry-Christmas.aspx</link>
      <author>Frédéric Colin</author>
      <comments>http://blog.vertice.fr/post/2010/12/25/Merry-Christmas.aspx#comment</comments>
      <guid>http://blog.vertice.fr/post.aspx?id=4dae4510-0204-43ae-ab0d-d4cdb1baf4ec</guid>
      <pubDate>Sat, 25 Dec 2010 00:01:00 +0100</pubDate>
      <category>Nova Studio</category>
      <category>Vertice</category>
      <publisher xmlns="http://purl.org/dc/elements/1.1/">Frédéric Colin</publisher>
      <server xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/pingback.axd</server>
      <target xmlns="http://madskills.com/public/xml/rss/module/pingback/">http://blog.vertice.fr/post.aspx?id=4dae4510-0204-43ae-ab0d-d4cdb1baf4ec</target>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://blog.vertice.fr/trackback.axd?id=4dae4510-0204-43ae-ab0d-d4cdb1baf4ec</ping>
      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/post/2010/12/25/Merry-Christmas.aspx#comment</comment>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blog.vertice.fr/syndication.axd?post=4dae4510-0204-43ae-ab0d-d4cdb1baf4ec</commentRss>
    </item>
    <item>
      <title>Dites Non aux UserControls !</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/10/29/dites-non-aux-usercontrols.aspx</link>
      <pubDate>Fri, 29 Oct 2010 16:01:00 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:49898</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/49898.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=49898</commentRss>
      <description>
  Que ce soit dans Visual Studio, dans les samples, sur MSDN partout on nous dit “Pour vos applications XAML, découper vos interfaces utilisateur en UserControl réutilisable”.   Et bien je dis non !   Première raison : les performances. Le temps du calc...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=49898" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>WP7 – Scrollbar flickering</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/10/18/wp7-scrollbar-flickering.aspx</link>
      <pubDate>Mon, 18 Oct 2010 08:10:47 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:49812</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/49812.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=49812</commentRss>
      <description>
  Si lorsque vous scrollez dans une ListBox la taille de votre ScrollBar change et la ScrollBar fait de petits sauts, vous allez surement apprécier la suite de ce post.   Si vous n’avez jamais rencontré le problème, vous pouvez toujours télécharger le c...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=49812" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>WP7 – La virtualisation d’interface</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/10/13/wp7-la-virtualisation-d-interface.aspx</link>
      <pubDate>Wed, 13 Oct 2010 06:23:00 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:49794</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">4</comments>
      <comments>http://blogs.developpeur.org/vko/comments/49794.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=49794</commentRss>
      <description>
  On entend beaucoup parler de virtualisation dans différents blogs sur Windows Phone 7 qui mélangent deux concepts de virtualisation : la virtualisation d’interface (UI Virtualization) et la virtualisation de donnée (Data Virtualisation).  Parce que ce...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=49794" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-5315501081629706040</guid>
      <pubDate>Wed, 15 Sep 2010 14:51:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-09-15T16:53:00.306+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">Windows Phone</category>
      <category domain="http://www.blogger.com/atom/ns#">Silverlight</category>
      <title>Découvrez le Speak-O-Matic sur Windows Phone 7</title>
      <description>&lt;p&gt;Je vous avais déjà parlé le mois dernier de l’application faite par David Catuhe sur Windows Phone, &lt;a href="http://blog.adhess.net/2010/08/de-la-3d-sur-windows-phone-7.html"&gt;le fameux moteur 3D Nova4Phone&lt;/a&gt;, qui participe au concours Windows Phone sur Facebook.&lt;/p&gt;  &lt;p&gt;Et bien, aujourd’hui c’est moi qui me lance dans le concours, avec une application d’aide à la conversation : le Speak-O-Matic.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_1fIQLbpqRAw/TJDdfIaAuQI/AAAAAAAABzI/wJXv8nWme9g/image%5B5%5D.png?imgmax=800" width="831" height="457" /&gt; &lt;/p&gt;  &lt;p&gt;Le principe : le logiciel vous génère des phrases que vous pouvez replacer dans vos discussions, selon l’un des 4 thèmes :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Le parler creux, génère des phrases creuses pour les apprentis démagos et autres étudiants de sciencs-po.&lt;/li&gt;    &lt;li&gt;Ta mère : un générateur d’insultes, très utile dans les cités&lt;/li&gt;    &lt;li&gt;Le philosophe : générateur de proverbes, pleins de bon sens (au moins autant que les vrais)&lt;/li&gt;    &lt;li&gt;Le dragueur : l’indispensable pour séduire les filles&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Plus de détails en vidéo sur Facebook :   &lt;br /&gt;&lt;a title="http://www.facebook.com/video/video.php?v=430590738926&amp;amp;ref=mf" href="http://www.facebook.com/video/video.php?v=430590738926&amp;amp;ref=mf"&gt;http://www.facebook.com/video/video.php?v=430590738926&amp;amp;ref=mf&lt;/a&gt;    &lt;br /&gt;(notez le jeu d’acteur ;)&lt;/p&gt;  &lt;p&gt;Si vous aimez ma vidéo, que vous m’aimez moi, et que vous voulez me voir en finale, vous pouvez voter pour ma vidéo. Pour ce faire, c’est tout simple : devenez fan de la page &lt;a href="http://www.facebook.com/Developpeurs.net"&gt;Developpeurs&lt;/a&gt;, puis retourner voir ma vidéo et cliquez sur “J’aime”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-5315501081629706040?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/09/decouvrez-le-speak-o-matic-sur-windows.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_1fIQLbpqRAw/TJDdfIaAuQI/AAAAAAAABzI/wJXv8nWme9g/s72-c/image%5B5%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-8168985867569550574</guid>
      <pubDate>Mon, 30 Aug 2010 10:10:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2011-01-30T11:15:27.003+01:00</updated>
      <title>10 vérités sur moi</title>
      <description>&lt;p&gt;&lt;a href="http://www.catuhe.com/post/10-trucs-sur-ma-vie.aspx"&gt;Kosh&lt;/a&gt; a lancé il y a quelques temps un petit jeu pour les blogueurs : il faut dire 10 vérités sur soi, et demander à quelqu’un d’enchainer. Je pensais pouvoir éviter la corvée, jusqu’à ce que &lt;a href="http://blogs.developpeur.org/vko/archive/2010/08/26/10-trucs-sur-moi.aspx"&gt;Vko&lt;/a&gt; se souvienne de moi… Voilà donc 10 vérités totalement futiles et inintéressantes sur moi, profitez-en bien !&lt;/p&gt;  &lt;p&gt;- Je déteste parler de moi. L'écriture de ce billet va être pour moi une effroyable torture.&lt;/p&gt;  &lt;p&gt;- Mon nom de famille est "Lacasa". C'est un nom d'origine espagnole qui se prononce donc "lacassa", et non "lacaza". Il s'agit d'un nom très répandu en Aragon, région d'où étaient originaires mes grands parents, un chocolat très réputé porte d'ailleurs ce nom en Espagne.&lt;/p&gt;  &lt;p&gt;- Je n'aime pas WoW. J'évite en général de m'en vanter au bureau, mais c'est hélas vrai.&lt;/p&gt;  &lt;p&gt;- J'ai écris mes premières lignes de code en Turbo Pascal, alors que je venais de rentrer au collège. Lorsque j'ai eu des cours de programmation au lycée (en Turbo Pascal toujours), il m'est arrivé de donner la correction d'un exercice à la prof, sa version étant incorrecte. Elle ne m'a d'ailleurs jamais rendu ma disquette.&lt;/p&gt;  &lt;p&gt;- Même si j'aime à me faire passer pour un ariégeois, je n'ai réellement vécu à Pamiers que 10 mois. Mon accent vient en fait de Carcassonne, où j'ai passé toute mon enfance.  &lt;br /&gt;Il n'empêche que toute ma famille vit en Ariège, et que j'y passe régulièrement mes week-ends. &lt;/p&gt;  &lt;p&gt;- Je n'aime pas la bière. C'est quand même pas ma faute si c'est pas bon ! Et j'aimerais bien qu'on arrête de me prendre pour un extra-terrestre à chaque fois que je le dis...&lt;/p&gt;  &lt;p&gt;- Lorsque j'étais jeune, je voulais devenir PDG de Microsoft pour être aussi riche que Bill Gates. Ce projet n'est plus d'actualité, mais je ne désespère pas de devenir riche par d'autres moyens.&lt;/p&gt;  &lt;p&gt;- Je n'ai qu'un rein. Mais il est plus gros que la moyenne, donc je ne complexe pas. 23 ans plus tard, la cicatrice de l'opération de l'ablation du rein gauche est toujours visible sur mon ventre.&lt;/p&gt;  &lt;p&gt;- Je ne suis pas un grand amateur de musique... ça surprend souvent les gens, mais je n'achète pas de CD, et je n'ai pas de lecteur mp3. Je n'ai rien contre la musique, j'en écoute lorsque je suis avec d'autres personnes, mais globalement en bruit de fond je préfère entendre des gens qui parlent (des radios d'info en général).&lt;/p&gt;  &lt;p&gt;- Je suis bien content d'avoir fini de dire mes 10 trucs sur moi (si, si, c'est ça la 10ème vérité sur ma vie)&lt;/p&gt;  &lt;p&gt;Et maintenant, au tour de &lt;a href="http://blog.maneu.net/"&gt;Chris&lt;/a&gt; !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-8168985867569550574?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/08/10-verites-sur-moi.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title>10 trucs sur moi</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/08/26/10-trucs-sur-moi.aspx</link>
      <pubDate>Thu, 26 Aug 2010 08:49:00 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:49477</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/49477.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=49477</commentRss>
      <description>
  Je continue dans la foulée de Djeepy, Kosh, Ben, Mim qui dévoilent 10 trucs vraiment pas intéressant sur eux :p  1. A l’âge de 4 ans je m’étais déjà : troué la langue, ouvert l’arcade sourcilière, arracher 4 ongles dans une porte, ouvert le menton. Ma...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=49477" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-8222916803725630769</guid>
      <pubDate>Tue, 17 Aug 2010 09:55:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-08-17T11:55:22.150+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">3D</category>
      <category domain="http://www.blogger.com/atom/ns#">Windows Phone</category>
      <category domain="http://www.blogger.com/atom/ns#">XNA</category>
      <title>De la 3D sur Windows Phone 7</title>
      <description>&lt;p&gt;Pour changer un peu du développement web, on peut aller voir ce qui se fait sur Windows Phone. &lt;/p&gt;  &lt;p&gt;Aujourd’hui, je vous propose de découvrir le moteur 3D fait par David Catuhe pour Windows Phone : c’est juste impressionnant. Pour voir la démo, ça se passe sur facebook : &lt;a title="http://www.facebook.com/video/video.php?v=1413141241316&amp;amp;oid=129459787073480" href="http://www.facebook.com/video/video.php?v=1413141241316&amp;amp;oid=129459787073480"&gt;http://www.facebook.com/video/video.php?v=1413141241316&amp;amp;oid=129459787073480&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;N’hésitez pas à “liker” la vidéo si vous aimez !&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-8222916803725630769?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/08/de-la-3d-sur-windows-phone-7.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-405407762936343727</guid>
      <pubDate>Tue, 17 Aug 2010 09:45:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-08-17T11:45:36.711+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">MVC 2</category>
      <category domain="http://www.blogger.com/atom/ns#">MVC</category>
      <category domain="http://www.blogger.com/atom/ns#">ASP.NET</category>
      <title>ASP.NET MVC : gestion dynamique des droits d’accès aux pages</title>
      <description>&lt;p&gt;Si vous lisez mon blog régulièrement, vous avez du vous rendre compte qu’ASP.NET MVC n’est pas vraiment terrible, puisque je passe mon temps à refaire tout ce qu’il fait déjà. Je continue aujourd’hui avec la gestion des droits d’accès aux pages.&lt;/p&gt;  &lt;p&gt;ASP.NET MVC, tout comme les WebForms, se base sur les Membership providers pour la gestion des utilisateurs. Mais contrairement aux WebForms, on ne pourra pas utiliser le web.config pour définir quelles pages sont accessibles ; pour ça, MVC utilise les DataAnnotations sur les contrôleurs et les actions.    &lt;br /&gt;On va décorer nos contrôleurs (ou nos actions) avec un petit [Authorize] pour définir que l’utilisateur doit être logué pour accéder au contrôleur (ou à l’action).&lt;/p&gt;  &lt;p&gt;Pour donner les autorisations par utilisateur ou par rôle (groupes basés sur le Role Provider), on va pouvoir définir les utilisateurs et rôles autorisés.    &lt;br /&gt;En pratique, ça donnera quelque chose comme ça :&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; [Authorize]&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ActionResult UserDetail()&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     var userData = GetCurrentUserData();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; View(userData);&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; [Authorize(Roles=&lt;span style="color: #006080"&gt;&amp;quot;Administrateurs&amp;quot;&lt;/span&gt;, Users=&lt;span style="color: #006080"&gt;&amp;quot;Guigui&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ActionResult Admin()&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; View();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Voilà, c’est bien beau tout ça, mais comme j’ai dis en introduction, ça me suffit pas. Oui, je suis exigeant (qui a dit “chieur” ?), et moi ce que je veux, c’est pouvoir définir les droits dynamiquement. Par exemple, j’aurai dans ma base de données ma liste de contrôleurs, d’actions, et de rôles associés qui seraient autorisés à y accéder… et ça, ben je peux pas le faire avec le AuthorizeAttribute.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Qu’à celà ne tienne, je vais faire mon attribut à moi ! Et comme j’ai pas envie de tout refaire, je vais directement hériter du AuthorizeAttribute, et faire mes vérifications à la mimine. Pour les vérifications, j’aurai juste à redéfinir la méthode “AuthorizeCore” qui renverra true si l’utilisateur a accès, ou false s’il n’y a pas accès… Voilà le résultat :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyDbAuthorizeAttribute : AuthorizeAttribute&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; AuthorizeCore(HttpContextBase httpContext)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         MvcHandler handler = httpContext.CurrentHandler &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; MvcHandler;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;         RouteValueDictionary routeValues = handler.RequestContext.RouteData.Values;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;         String controller = routeValues[&lt;span style="color: #006080"&gt;&amp;quot;controller&amp;quot;&lt;/span&gt;].ToString();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;         String action = routeValues[&lt;span style="color: #006080"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;].ToString();&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;         IPrincipal user = httpContext.User;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; CheckAuthorization(user, controller, action);&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; CheckAuthorization(System.Security.Principal.IPrincipal iPrincipal, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; controller, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; action)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// Ici je vais pouvoir interroger ma base de données&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Une fois qu’on a définit notre attribut, on n’a plus qu’à taguer tous nos contrôleurs avec un [MyDbAuthorize] pour que la vérification des droits se fasse dans notre méthode de vérification.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-405407762936343727?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/08/aspnet-mvc-gestion-dynamique-des-droits.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-5532596519218780723</guid>
      <pubDate>Mon, 07 Jun 2010 10:34:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-06-07T12:39:11.033+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">MVC</category>
      <title>ASP.NET MVC : Actions avec des listes en paramètres</title>
      <description>&lt;p&gt;Y’a rien à faire, j’arrive pas à m’y habituer… Je suis à chaque fois épaté de voir avec quelle facilité MVC gère les paramètres dans les contrôleurs. Après &lt;a href="http://blog.adhess.net/2010/01/upload-de-fichiers-avec-aspnet-mvc.html"&gt;l’envoi de fichiers&lt;/a&gt;, je me suis demandé comment cette fois récupérer une liste dans mon modèle.&lt;/p&gt;  &lt;p&gt;La première pensée que j’ai eue était “non, ça doit pas être possible”. La seconde “non, voyons, ou alors les mecs qui ont fait MVC c’est des Dieux”. Puis à la 3ème, qui était “il me semble qu’en PHP on peut, si en MVC on peut pas c’est la honte quand même”, je me suis décidé à effectuer quelques tests. Et je n’ai pas été déçu, puisqu’effectivement, c’est tout à fait possible de binder directement les paramètres à une liste.&lt;/p&gt;  &lt;p&gt;Pour cela, c’est très simple : on définit notre action avec un paramètre de type liste (ou un tableau, ça marche aussi)&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Consolas"&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ActionResult&lt;/font&gt;&lt;font color="#000000"&gt; ActionQuiVeutUneListe(&lt;/font&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt; laListe)         &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;et on peut appeler la page en lui passant plusieurs paramètres du même nom ; chacun des paramètres sera un des élément de la liste.    &lt;br /&gt;L’URL sera du type: &lt;font color="#400000"&gt;/Home/ActionQuiVeutUneListe?laListe=elmt1&amp;amp;laListe=elmt2&amp;amp;laListe=elmt3&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;En plus de ça, on a aussi la possibilité d’ordonner les éléments de la liste en mettant leur position entre crochets. La numérotation doit se faire de 0 au nombre d’éléments, s’il y a un trou dans le compte les éléments suivants ne seront pas pris.&lt;/p&gt;  &lt;p&gt;&lt;font color="#400000"&gt;/Home/ActionQuiVeutUneListe?laListe[2]=elmtC&amp;amp;laListe[0]=elmtA&amp;amp;laListe[1]=elmtB&lt;/font&gt;     &lt;br /&gt;En tapant cette URL, on aura les éléments dans l’ordre : “elmtA”, “elmtB”, “elmtC”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/TAzMSji8xBI/AAAAAAAAByo/fS7p9jYiBtA/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_1fIQLbpqRAw/TAzMTWqRKdI/AAAAAAAABys/VIpduzDV2gc/image_thumb%5B2%5D.png?imgmax=800" width="685" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Maintenant, il ne vous reste plus qu’à faire vos liens vers cette page. Pour cela, comme d’habitude, deux façons de faire :&lt;/p&gt;  &lt;p&gt;Si vous êtes dans un formulaire, pas de soucis, il suffit de faire plusieurs input avec le même nom (ou en mettant l’index entre crochets dans les noms).    &lt;br /&gt;Par contre, si vous voulez faire un simple lien, vous ne pourrez pas utiliser les Html Helper, il vous faudra construire le lien à la main ou bien faire votre propre Helper (à moins que j’aie mal regardé leur fonctionnement, si quelqu’un a des infos je suis à votre écoute)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-5532596519218780723?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/06/aspnet-mvc-actions-avec-des-listes-en.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_1fIQLbpqRAw/TAzMTWqRKdI/AAAAAAAABys/VIpduzDV2gc/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-3028937324176227198</guid>
      <pubDate>Wed, 02 Jun 2010 08:28:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-06-02T14:49:05.641+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">JavaScript</category>
      <category domain="http://www.blogger.com/atom/ns#">HTML</category>
      <title>Non, ASP.NET n’ajoute pas de fonctionnalités aux navigateurs</title>
      <description>&lt;p&gt;On m’a récemment posé la question suivante : “est-ce qu’il est possible en asp.net de faire une liste de choix éditable ?” (si vous avez lu le titre du post, vous vous doutez déjà de la réponse, mais je vais quand même expliquer un peu)&lt;/p&gt;  &lt;p&gt;Quand je me pose une question comme ça, j’ai plusieurs réflexes :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Regarder si il existe une propriété dans ma DropDownList dont le nom ressemble à ce que je veux faire. Si les noms ne sont pas suffisamment explicites, on peut toujours faire un petit tour sur &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist_members.aspx"&gt;msdn&lt;/a&gt;… &lt;/li&gt;    &lt;li&gt;Faire une recherche Google (j’y reviendrai) &lt;/li&gt;    &lt;li&gt;Réfléchir au html qu’on veut voir générer. Si ça ne se fait pas tout seul, il va bien falloir trouver comment le faire nous même. Certains oublient parfois que ce qu’asp.net génère sera affiché dans des navigateurs webs (et pas seulement Internet Explorer, quoi qu’en disent certaines mauvaises langues) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Et c’est là tout le problème : le contrôle DropDownList en asp.net va générer une balise &amp;lt;select&amp;gt; en html… Et cette balise en html n’est pas éditable, quelles que soient les options qu’on y mette dedans ; pas besoin d’être un spécialiste asp.net pour en arriver à cette conclusion. Cette option n’est pas possible en html, asp.net ne peut pas l’inventer.&lt;/p&gt;  &lt;p&gt;Et donc, n’y a-t-il pas de solution ? Bien sûr que si, comme avec n’importe quel autre langage serveur qui ne propose pas cette option : faire du JavaScript.    &lt;br /&gt;Il existe énormément de possibilité pour avoir un comportement similaire, et de toute façon d’autres personnes l’ont déjà fait avant : &lt;a href="http://www.google.fr/search?hl=fr&amp;amp;source=hp&amp;amp;q=html+editable+select&amp;amp;aq=0&amp;amp;aqi=g1&amp;amp;aql=&amp;amp;oq=html+editable+sel&amp;amp;gs_rfai="&gt;une recherche Google&lt;/a&gt; vous donnera plusieurs codes touts faits.     &lt;br /&gt;Peut-être même qu’en cherchant un peu plus quelqu’un a écrit un contrôle serveur asp.net qui fera tout le javascript pour vous (après c’est selon vos préférences, à vous de voir si la perte de temps dans la recherche de la solution miracle est nécessaire, ou bien si vos yeux pourront supporter de voir quelques lignes de JavaScript).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-3028937324176227198?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/06/non-aspnet-najoute-pas-de.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-5090637451742135602</guid>
      <pubDate>Tue, 01 Jun 2010 10:49:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-06-01T12:49:53.672+02:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">BDC</category>
      <category domain="http://www.blogger.com/atom/ns#">Bewise</category>
      <title>La Bewise Day Conference : quand y’en a plus, y’en a encore !</title>
      <description>&lt;p&gt;Avis à la population : Bewise vient d’ouvrir son site “After BDC”, où vous pourrez trouver les photos de l’évènement, ainsi que des slides et démos des différentes sessions et ATE.&lt;/p&gt;  &lt;p&gt;Le contenu se remplira petit à petit au fil des semaines, soyez à l’écoute ! &lt;/p&gt;  &lt;p&gt;L’adresse ? c’est par là : &lt;a title="http://afterbdc.bewise.fr/" href="http://afterbdc.bewise.fr/"&gt;http://afterbdc.bewise.fr/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notez aussi que si vous utilisez Twitter, vous pouvez suivre le flux de l’after BDC par ici : &lt;a title="http://twitter.com/afterbdc" href="http://twitter.com/afterbdc"&gt;http://twitter.com/afterbdc&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-5090637451742135602?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/06/la-bewise-day-conference-quand-yen-plus.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title>Mise en ligne des ressources / démo de la BDC</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/06/01/mise-en-ligne-des-ressources-d-mo-de-la-bdc.aspx</link>
      <pubDate>Tue, 01 Jun 2010 08:44:12 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:48845</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>
      <comments>http://blogs.developpeur.org/vko/comments/48845.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=48845</commentRss>
      <description>
  Retrouvez dés maintenant toutes les ressources autour de l’évènement majeur pour les développeurs .NET du sud qui a eut lieu en avril : la Bewise Developper Conference.  C’est ici que ca se passe : http://afterbdc.bewise.fr/.  PS : à noter la magnifiq...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=48845" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-7341620196544335462</guid>
      <pubDate>Mon, 10 May 2010 15:54:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-05-10T18:00:37.406+02:00</updated>
      <title>La librairie Microsoft Ajax abandonnée, au profit de jQuery</title>
      <description>&lt;p&gt;Vous vous souvenez de la librairie Microsoft Ajax ? J’en avais parlé l’an dernier lors de la Bewise Day Conference (et aussi dans &lt;a href="http://blog.adhess.net/2009/04/bdc-2009-aspnet-40-javascript.html"&gt;un post&lt;/a&gt; quelques temps après). Pour mémoire, il s’agissait d’une librairie pur JavaScript qui proposait notamment un repeater et du databinding en JavaScript, qui n’est jamais sorti du stade de la beta (voire même preview, je me souviens plus très bien)&lt;/p&gt;&lt;p&gt;Eh bien j’ai été surpris en voyant Scott Guthrie nous parler &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/05/07/jquery-templates-and-data-linking-and-microsoft-contributing-to-jquery.aspx"&gt;des contributions de Microsoft à jQuery&lt;/a&gt;. Au programme : templates clients et data binding (renommés data linking pour l’occasion, jQuery ayant déjà une fonction nommée “bind”), des fonctionnalités déjà présentes dans la librairie de Microsoft. J’ai donc eu un petit doute : cette librairie ne devait-elle pas être fournie avec le framework 4 ? Pourquoi n’est-elle pas dans Visual Studio 2010 alors qu’elle était dans les beta ? Une vérification sur la page &lt;a href="http://aspnet.codeplex.com"&gt;codeplex d’asp.net&lt;/a&gt; m’a confirmé ce que je pensais : plus la moindre trace de cette librairie.&lt;/p&gt;&lt;p&gt;C’est donc jQuery qui va hériter de ces fonctionnalités plus qu’intéressantes, et finalement, c’est loin d’être une mauvaise nouvelle : même si les 2 librairies cohabitaient très bien, on n’aura finalement besoin de connaitre qu’une seule librairie, plus de risque de se perdre avec les syntaxes différentes utilisées par jQuery et MS Ajax. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;jQuery Templates&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Au programme donc, nous avons les templates : une version JavaScript des repeaters.   &lt;br /&gt;Comment ça fonctionne ? Eh bien de la manière suivante :   &lt;br /&gt;Il nous faut définir un template (ici dans la balise script, afin de ne pas l’afficher tel quel dans la page), et un container dans lequel jQuery injectera le html généré depuis le template :&lt;/p&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;contactContainer&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;contactTemplate&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;text/html&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     Name: {{= name }}&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     Phone: {{= phone }}&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Une fois le template défini, on va lui associer nos données, par exemple un tableau JavaScript dans notre exemple, mais il pourrait être intéressant de l’associer au résultat d’un appel Ajax, par exemple.&lt;/p&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;script type=&lt;span style="color: #006080"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; contacts = [&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         { name: &lt;span style="color: #006080"&gt;&amp;quot;Scott Guthrie&amp;quot;&lt;/span&gt;, phone: &lt;span style="color: #006080"&gt;&amp;quot;415-555-2222&amp;quot;&lt;/span&gt; },&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;         { name: &lt;span style="color: #006080"&gt;&amp;quot;Guillaume Lacasa&amp;quot;&lt;/span&gt;, phone: &lt;span style="color: #006080"&gt;&amp;quot;05 11 22 33 44&amp;quot;&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     ];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;#contactTemplate&amp;quot;&lt;/span&gt;).render(contacts).appendTo(&lt;span style="color: #006080"&gt;&amp;quot;#contactContainer&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;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: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Data-linking&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Seconde nouveauté, le data-linking. L’idée est de lier une propriété d’un objet avec une propriété d’un autre objet : quand on en modifie un, l’autre est modifié automatiquement. Pas de code pour cette fonctionnalité, mais vous pouvez retrouver un exemple d’utilisation sur &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/05/07/jquery-templates-and-data-linking-and-microsoft-contributing-to-jquery.aspx"&gt;le blog de maître Gu&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Je reviendrai plus en détail sur chacune de ces fonctionnalités, qui offrent des possibilités plus poussées que le peu que j’ai exploré à ce jour : boucles, conditions, linking mono et bi-directionnel, et combinaisons du linking avec les templates. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-7341620196544335462?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/05/la-librairie-microsoft-ajax-abandonnee.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">3</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-676717905403716923</guid>
      <pubDate>Tue, 04 May 2010 12:34:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-05-04T14:34:49.066+02:00</updated>
      <title>Bewise recrute un admin système et réseaux</title>
      <description>&lt;p&gt;Et oui, Bewise recrute encore. Tu aimes Exchange ? Tu maitrises Active Directory ? La nuit, tu rêves de trames IP ? Et tu as envie de travailler à Toulouse, la ville où il fait toujours beau (ou presque…) ? Alors lis les détails de l’annonce :&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Bewise,&lt;/i&gt;&lt;/b&gt;&lt;i&gt; basée à Toulouse&lt;b&gt;,&lt;/b&gt; est spécialisée sur les technologies Microsoft. Nous sommes donc aujourd'hui fortement engagés sur l'ensemble des technologies Microsoft (plate-forme .NET, plate-forme applicative, serveurs, etc.). &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Nous recherchons actuellement un &lt;b&gt;&lt;u&gt;Administrateur Système et Réseaux h/f&lt;/u&gt;&lt;/b&gt;.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Rattaché au Directeur Technique, vous aurez la gestion complète et autonome de l'infrastructure technique de Bewise.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;Vos missions : &lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;Garantir le bon fonctionnement du système d'information et le niveau de service attendu&lt;/i&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Assister les utilisateurs et les consultants&lt;/i&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Gérer le parc de téléphonie mobile et fixe&lt;/i&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Gérer la salle de formation&lt;/i&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;&lt;i&gt;Mettre en œuvre les produits serveurs du catalogue de Microsoft&lt;/i&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;i&gt;Vous êtes autonome, rigoureux, organisé et passionné par la technologie.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Vous avez 1 an d'expérience sur les systèmes Microsoft.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Vous avez une bonne connaissance des technologies suivantes:&lt;/i&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;i&gt;Windows 2008 &lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;Active Directory&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;Exchange&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;i&gt;La connaissance d'autres produits du catalogue Microsoft serait un plus.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Rémunération selon profil.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.bewise.fr/fr-FR/presentation/Pages/Administrateur-Système-Réseaux.aspx" href="http://www.bewise.fr/fr-FR/presentation/Pages/Administrateur-Syst&amp;egrave;me-R&amp;eacute;seaux.aspx"&gt;http://www.bewise.fr/fr-FR/presentation/Pages/Administrateur-Système-Réseaux.aspx&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;Bewise recrute aussi des consultants .NET, Sharepoint et BI, sur Toulouse et Aix-en-Provence : &lt;a title="http://www.bewise.fr/fr-FR/presentation/Pages/jobs.aspx" href="http://www.bewise.fr/fr-FR/presentation/Pages/jobs.aspx"&gt;http://www.bewise.fr/fr-FR/presentation/Pages/jobs.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-676717905403716923?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/05/bewise-recrute-un-admin-systeme-et.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-4896616133489704286</guid>
      <pubDate>Thu, 29 Apr 2010 08:53:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-04-29T14:05:38.040+02:00</updated>
      <title>La BDC était trop courte ? Elle revient à Aix le 18 mai !</title>
      <description>&lt;p&gt;Vous êtes nombreux à avoir apprécié la Bewise Day Conference le 1er avril dernier… Mais certains d’entre vous n’ont peut-être pas pu venir, ou ont peut-être envie d’y retourner.&lt;/p&gt;  &lt;p&gt;Eh bien pas de problème, la BDC est de retour, l’équipe de Bewise Sud-Est vous accueillera au &lt;a href="http://www.casinoaix.com/"&gt;Pasino d’Aix en Provence&lt;/a&gt; pour une BDC au son des cigales.&lt;/p&gt;  &lt;p&gt;Plus d’informations et inscriptions sur le site de &lt;a href="http://bse.bewise.fr/BDC2010/?f=af7fc6f4-f8f6-4a54-b489-d414ae555d2e"&gt;la Bewise Day Conference d’Aix en Provence&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-4896616133489704286?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/04/la-bdc-etait-trop-courte-elle-revient.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">2</total>
    </item>
    <item>
      <title><![CDATA[Bewise Day Conference 2010]]></title>
      <link>http://dotnet.over-blog.fr/article-bewise-day-conference-2010-48482270.html</link>
      <description><![CDATA[	Evenement Bewise Sud Est ! Après bientôt trois ans d'existence, Bewise Sud Est organise la première BDC sur Aix-en-Provence. Les innovations technologiques Microsoft pour les développeurs et les IT pro présentées par les meilleurs experts de Bewise et Microsoft ! Evénement gratuit destiné aux[...]]]></description>
      <pubDate>Mon, 12 Apr 2010 16:20:00 +0200</pubDate>
      <guid isPermaLink="false">e2d5642c69e85c15bcc6f9dd4e2681e6</guid>
      <category>NEWS</category>
      <comments>http://dotnet.over-blog.fr/article-bewise-day-conference-2010-48482270-comments.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Bewise Day Conference 2010]]></title>
      <link>http://vsto-sps.over-blog.com/article-bewise-day-conference-2010-48482043.html</link>
      <description><![CDATA[	Evenement Bewise Sud Est ! Après bientôt trois ans d'existence, Bewise Sud Est organise la première BDC sur Aix-en-Provence. Les innovations technologiques Microsoft pour les développeurs et les IT pro présentées par les meilleurs experts de Bewise et Microsoft ! Evénement gratuit destiné aux[...]]]></description>
      <pubDate>Mon, 12 Apr 2010 16:19:00 +0200</pubDate>
      <guid isPermaLink="false">dbf99ee1627af0916faa24bce7104d68</guid>
      <category>Evènements</category>
      <comments>http://vsto-sps.over-blog.com/article-bewise-day-conference-2010-48482043-comments.html#anchorComment</comments>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-8592735363568315667</guid>
      <pubDate>Wed, 31 Mar 2010 11:47:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-03-31T13:47:37.383+02:00</updated>
      <title>Au fait, j’avais pas quelque chose de prévu pour demain moi ?</title>
      <description>&lt;p&gt;Et oui, demain c’est le premier avril. Comme chaque année vous allez pouvoir vous amuser à accrocher des poissons aux dos de vos amis, et éplucher les informations pour trouver les plus improbables… Mais cette année, Bewise vous propose encore mieux !&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/S7M2VvuBkbI/AAAAAAAAByg/AJ-fIUPBnkQ/s1600-h/IMAGE_303%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMAGE_303" border="0" alt="IMAGE_303" src="http://lh5.ggpht.com/_1fIQLbpqRAw/S7M2WBepHsI/AAAAAAAAByk/zZ5BSRnr69U/IMAGE_303_thumb.jpg?imgmax=800" width="184" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Et oui, &lt;a href="http://bdc2010.bewise.fr/?f=A56BC4FC-9B40-4e60-A8D5-B188D54819BC"&gt;la Bewise Day Conference&lt;/a&gt; est de retour dès demain, avec tout plein de technos, du développement, de l’IT, et des tables Surface !&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-8592735363568315667?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/03/au-fait-javais-pas-quelque-chose-de.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_1fIQLbpqRAw/S7M2WBepHsI/AAAAAAAAByk/zZ5BSRnr69U/s72-c/IMAGE_303_thumb.jpg?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-4618716879920034760</guid>
      <pubDate>Fri, 26 Mar 2010 12:38:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-03-27T14:54:00.006+01:00</updated>
      <title>[BDC2010] Venez rencontrer Hyper D, notre super héros admin réseau</title>
      <description>&lt;p&gt;Cher ami, lecteur assidu de mon blog, tu sais déjà que la &lt;a href="http://bdc2010.bewise.fr/?f=A56BC4FC-9B40-4e60-A8D5-B188D54819BC"&gt;Bewise Day Conference&lt;/a&gt; aura lieu le 1er avril prochain à Toulouse… Mais malheureusement, pour une raison qui m’échappe, tu ne t’es peut-être pas encore inscrit.&lt;/p&gt;  &lt;p&gt;C’est vraiment dommage, puisque la BDC sera pour toi une occasion unique de rencontrer Hyper D, notre super héros admin réseau ! Voici un petit aperçu de ses pouvoirs :&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KPecQKsvpF8&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/KPecQKsvpF8&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Si tu veux savoir comment notre admin réseau arrive faire plusieurs choses à la fois, viens découvrir la virtualisation avec Hyper-V à &lt;a href="http://bdc2010.bewise.fr/?f=A56BC4FC-9B40-4e60-A8D5-B188D54819BC"&gt;la BDC 2010&lt;/a&gt; !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-4618716879920034760?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/03/bdc2010-venez-rencontrer-hyper-d-notre.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-633486956248139696</guid>
      <pubDate>Wed, 17 Mar 2010 11:14:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-03-17T12:26:08.340+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">CSS</category>
      <category domain="http://www.blogger.com/atom/ns#">HTML</category>
      <title>La manière propre de faire des roll-over en html/css</title>
      <description>&lt;p&gt;Aujourd’hui, on va faire du html, et du css. Pas d’asp, pas de JavaScript, on fait du web pur et dur. Je vous propose de faire un effet de roll-over sur une image.&lt;/p&gt;  &lt;p&gt;Alors je vous entend tous râler, comme quoi c’est trop simple, qu’on a 10000 codes sources qui fonctionnent sur Google, et que je vous avais habitué à mieux. Certes, on a des codes sources qui fonctionnent, mais ils ne sont pas toujours très propres… Comme j’ai dis en introduction, on va faire ici un roll-over uniquement avec du css, pas de javascript. Et petit bonus, ma technique va éviter un problème qu’on rencontre souvent sur des images en roll-over : pas besoin d’attendre que la souris passe sur l’image pour charger la seconde image.&lt;/p&gt;  &lt;p&gt;Mais fini de papoter, voyons comment faire :&lt;/p&gt;  &lt;p&gt;Pour commencer, il me faut mes deux images : celle affichée normalement, et celle affichée lorsque la souris passera dessus. Et attention, c’est là qu’est toute l’astuce, on va mettre le 2 dans un seul fichier image, comme ça :&lt;/p&gt;  &lt;p&gt;&lt;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="rollover" border="0" alt="rollover" src="http://lh5.ggpht.com/_1fIQLbpqRAw/S6C5oKzkR6I/AAAAAAAAByc/yVvuI4eIU90/rollover%5B9%5D.png?imgmax=800" width="80" height="100" /&gt; &lt;/p&gt;  &lt;p&gt;(je n’accepterai aucune remarque sur le bon goût de mes images, et je rappelle que je n’ai jamais prétendu être designer ;)&lt;/p&gt;  &lt;p&gt;Maintenant, on va afficher ça dans notre page. D’un point de vue HTML, on va tout simplement faire un lien (pas de balise &amp;lt;img&amp;gt; ici) :&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Courier New"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;a&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#ff0000"&gt;class&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;rolloverLink&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;journuit.html&amp;quot;&amp;gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160; aller vers la page jour / nuit&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515"&gt;a&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Et on va afficher notre image à l’aide de CSS. Pour ça, on a plusieurs étapes :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Faire passer le lien en affichage de type block, et définir sa taille de manière à n’afficher que la moitié de notre fichier image. &lt;/li&gt;    &lt;li&gt;Mettre l’image en fond, et l’aligner en haut. &lt;/li&gt;    &lt;li&gt;Sur le hover, changer l’alignement pour qu’on voie l’autre moitié de l’image. &lt;/li&gt;    &lt;li&gt;Et pour ne pas qu’on voie le texte, on va le décaler loin en dehors de la page. Notez qu’il est tout de même important de laisser un texte pour des raisons d’accessibilité (pensez aux mal-voyants qui utilisent des navigateurs spécifiques) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;On a donc notre CSS :&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Courier New"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#a31515"&gt;a.rolloverLink&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160; &lt;br /&gt;{           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;text-indent&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0000ff"&gt;-10000px&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;display&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0000ff"&gt;block&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;width&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0000ff"&gt;80px&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;height&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0000ff"&gt;50px&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;background-image&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0000ff"&gt;url('rollover.png')&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;background-position&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0000ff"&gt;top&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;}           &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#a31515"&gt;a.rolloverLink:hover          &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#ff0000"&gt;background-position&lt;/font&gt;&lt;font color="#000000"&gt;: &lt;/font&gt;&lt;font color="#0000ff"&gt;bottom&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;}&lt;/font&gt;&lt;/font&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ce qui nous donne le résultat suivant :&lt;/p&gt;  &lt;p align="center"&gt;&lt;a class="rolloverLink" href="javascript:void(0)"&gt;aller vers la page jour / nuit&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Un grand merci à Jocelyn, responsable du domaine métier SWA (Solutions Web Avancées) chez Bewise, pour l’astuce ! &lt;/p&gt;  &lt;p&gt;Au passage, je vous rappelle que vous pourrez nous retrouver tous les deux, ainsi que toute l’équipe de Bewise et de Vertice, le 1er avril prochain lors de &lt;a href="http://bdc2010.bewise.fr/?f=A56BC4FC-9B40-4e60-A8D5-B188D54819BC"&gt;la Bewise Day Conference&lt;/a&gt;. N’hésitez pas à vous inscrire.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-633486956248139696?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/03/la-maniere-propre-de-faire-des-roll.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_1fIQLbpqRAw/S6C5oKzkR6I/AAAAAAAAByc/yVvuI4eIU90/s72-c/rollover%5B9%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">1</total>
    </item>
    <item>
      <title>[WindowsPhone7] Lecteur de flux RSS</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/03/15/windowsmobile7-lecteur-de-flux-rss.aspx</link>
      <pubDate>Mon, 15 Mar 2010 22:37:41 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:48129</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/48129.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=48129</commentRss>
      <description>
  Parce que j’aime pas tester à moitié, je me suis amusé à développer un petit lecteur de flux RSS avec un look qui vous rappellera surement quelque chose :)     La RC de Visual Studio est plutôt molle mais fonctionne correctement.   L’émulateur est pas...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=48129" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>[WindowPhone7] Premiers pas</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/03/15/windowphone7-premiers-pas.aspx</link>
      <pubDate>Mon, 15 Mar 2010 19:59:22 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:48124</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/48124.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=48124</commentRss>
      <description>
  Hop voici les premiers pas avec les outils de développement pour Windows Phone 7.  Premier changement suite à l’installation des outils : les type de projets pour la plateforme Windows Phone 7. Les projets se découpent en deux groupes :     Les projet...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=48124" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title>Windows Mobile 7 – Silverlight + XNA !</title>
      <link>http://blogs.developpeur.org/vko/archive/2010/03/05/windows-mobile-7-silverlight-xna.aspx</link>
      <pubDate>Fri, 05 Mar 2010 19:21:35 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:48068</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/vko/comments/48068.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=48068</commentRss>
      <description>
  L’actualité Windows Mobile est très active depuis la Mobile World Confress 2010 à Barcelone. (Contrairement à mes posts depuis le début de l’année)  Tout commence le 15 février avec l’annonce de Steeve Ballmer de Windows Phone 7 Series :     “Today, I...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=48068" width="1" height="1"&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-7802525142989137278</guid>
      <pubDate>Wed, 03 Mar 2010 11:22:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-03-03T12:22:15.250+01:00</updated>
      <title>En avant pour la Bewise Day Conference 2010 !</title>
      <description>&lt;p&gt;A la demande générale, la Bewise Day Conference est de retour pour une 4ème édition ! Encore une fois, venez découvrir ce qui se fait de mieux dans les technologies Microsoft.&lt;/p&gt;  &lt;p&gt;Cette année, beaucoup de nouveautés, puisque Microsoft lance la gamme 2010 de ses produits, notamment Visual Studio, Sharepoint, mais lance aussi la version 4 de son framework .net, MVC 2, Azure, et bien d’autres choses.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://bdc2010.bewise.fr?f=A56BC4FC-9B40-4e60-A8D5-B188D54819BC"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" border="0" alt="BDC 2009" src="http://www.bewise.fr/fr-FR/PublishingImages/anim_bdc%202010.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Je vous donne donc rendez-vous au stade Ernest Wallon, pour vous présenter ASP.NET, dans sa version 4, ainsi que ASP.NET MVC, et jQuery. &lt;/p&gt;  &lt;p&gt;Pour les inscriptions, rendez-vous sur &lt;a href="http://bdc2010.bewise.fr?f=A56BC4FC-9B40-4e60-A8D5-B188D54819BC"&gt;le site officiel de la BDC 2010&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-7802525142989137278?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/03/en-avant-pour-la-bewise-day-conference.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-7814178453934938348</guid>
      <pubDate>Thu, 28 Jan 2010 13:31:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2010-02-03T17:59:26.107+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">MVC</category>
      <title>Upload de fichiers avec ASP.NET MVC</title>
      <description>&lt;p&gt;Pour envoyer des fichiers avec ASP.NET MVC, c’est pas compliqué, mais encore faut-il savoir comment faire. Si en ASP.NET WebForm on a un contrôle qui le fait, avec MVC, on commence à en avoir l’habitude, il va falloir le faire à la pougne.&lt;/p&gt;  &lt;p&gt;On arrête de râler, les assistés, c’est pas plus compliqué qu’avant !&lt;/p&gt;  &lt;p&gt;Pour envoyer un fichier, on va utiliser l’élément HTML Input, de type “file”. On le mets dans notre formulaire, et on envoie. Attention, pour que ça fonctionne, il va falloir ajouter un attribut à notre formulaire : enctype=&amp;quot;multipart/form-data&amp;quot;. Scott Hanselman nous explique pourquoi sur &lt;a href="http://www.hanselman.com/blog/CommentView.aspx?guid=bc137b6b-d8d0-47d1-9795-f8814f7d1903"&gt;son blog&lt;/a&gt;.&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Courier New"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;% &lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#000000"&gt; (Html.BeginForm(&lt;/font&gt;&lt;font color="#a31515"&gt;&amp;quot;SendFile&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;font color="#a31515"&gt;&amp;quot;Home&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;font color="#2b91af"&gt;FormMethod&lt;/font&gt;&lt;font color="#000000"&gt;.Post, &lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#000000"&gt; { enctype = &lt;/font&gt;&lt;font color="#a31515"&gt;&amp;quot;multipart/form-data&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt; }))          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { %&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;input&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;file&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;fileSent&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;input&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;submit&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Send&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;% } %&amp;gt; &lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ensuite, lorsqu’on va poster notre formulaire, le fichier sera directement accessible dans notre Request :&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Courier New"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;/font&gt;&lt;font color="#2b91af"&gt;AcceptVerbs&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2b91af"&gt;HttpVerbs&lt;/font&gt;&lt;font color="#000000"&gt;.Post)]          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ActionResult&lt;/font&gt;&lt;font color="#000000"&gt; SendFile()          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#2b91af"&gt;HttpPostedFileBase&lt;/font&gt;&lt;font color="#000000"&gt; file = Request.Files[&lt;/font&gt;&lt;font color="#a31515"&gt;&amp;quot;fileSent&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;];          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#008000"&gt;//TODO : Gerer le fichier&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; file.SaveAs(filePath);          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#000000"&gt; View();          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Et parce que c’est de l’ASP.NET MVC, et qu’ASP.NET MVC ça poutre, on a même une solution encore plus simple ! Il suffit de le mettre en paramètre de notre action (n’oubliez pas que le nom du paramètre doit correspondre au “name” du input)&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Courier New"&gt;&lt;font size="2"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;/font&gt;&lt;font color="#2b91af"&gt;AcceptVerbs&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2b91af"&gt;HttpVerbs&lt;/font&gt;&lt;font color="#000000"&gt;.Post)]          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ActionResult&lt;/font&gt;&lt;font color="#000000"&gt; SendFile(&lt;/font&gt;&lt;font color="#2b91af"&gt;HttpPostedFileBase&lt;/font&gt;&lt;font color="#000000"&gt; fileSent)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#008000"&gt;//TODO : Gerer le fichier&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; fileSent.SaveAs(filePath);          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#000000"&gt; View();          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-7814178453934938348?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2010/01/upload-de-fichiers-avec-aspnet-mvc.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-3135430140435538927</guid>
      <pubDate>Tue, 15 Dec 2009 16:13:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2009-12-15T19:55:26.034+01:00</updated>
      <title>Optimisation du référencement avec le SEO Toolkit</title>
      <description>&lt;p&gt;Je viens de découvrir grâce à &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/12/15/search-engine-optimization-seo-toolkit.aspx"&gt;Scott Guthrie&lt;/a&gt; un outil qui va vite devenir indispensable à tout développeur de sites web : le SEO toolkit. SEO, pour ceux qui ne le savent pas, signifie “Search Engine Optimisation”. Il s’agit d’optimiser son site web pour que les moteurs de recherche en indexent mieux le contenu, afin d’apparaitre plus haut dans les résultats de recherche.&lt;/p&gt;  &lt;p&gt;Le SEO toolkit peut être téléchargé sur &lt;a href="http://www.microsoft.com/web/page.aspx?templang=en-us&amp;amp;chunkfile=seo.html"&gt;le site de Microsoft&lt;/a&gt;, ou bien directement à partir de l’outil “Web Platform Installer” (qu’il vous faudra de toute façon utiliser pour l’installer). &lt;/p&gt;  &lt;p&gt;Une fois installé, le principe est simple : vous mettez l’URL de la page d’accueil de votre site, et l’outil va parcourir tout votre site et vous signaler tout ce que vous pourriez améliorer. Vous pouvez l’utiliser avec n’importe quel site, pas besoin d’avoir d’utiliser IIS : le programme agit comme un bot qui va télécharger les pages de votre site web, comme le ferait n’importe quel moteur de recherche.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sye1tuJ85_I/AAAAAAAAByM/XWb-qidkAT4/s1600-h/image%5B4%5D.png"&gt;&lt;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://lh4.ggpht.com/_1fIQLbpqRAw/Sye1uSPzipI/AAAAAAAAByQ/wDwALa5915o/image_thumb%5B2%5D.png?imgmax=800" width="762" height="451" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Une fois l’analyse du site terminée, vous aurez de nombreuses informations sur le site analysé, de différents types. Ainsi, cet outil est très utile pour, entre autres, retrouver les liens cassés à l’intérieur de vos pages.&lt;/p&gt;  &lt;p&gt;Je ne saurai trop vous conseiller de le tester de suite afin de vous faire votre propre idée.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-3135430140435538927?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2009/12/optimisation-du-referencement-avec-le.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_1fIQLbpqRAw/Sye1uSPzipI/AAAAAAAAByQ/wDwALa5915o/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">1</total>
    </item>
    <item>
      <title>Interfaces professionnelles avec Windows Mobile (Part 2)</title>
      <link>http://blogs.developpeur.org/vko/archive/2009/12/09/interfaces-professionnelles-avec-windows-mobile-part-2.aspx</link>
      <pubDate>Wed, 09 Dec 2009 20:12:04 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:47386</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">4</comments>
      <comments>http://blogs.developpeur.org/vko/comments/47386.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=47386</commentRss>
      <description>
  
Dans la première partie, nous avons vu un aperçu des problématiques et des limitations de Windows Mobile lors la création de formulaires.
Dans cette seconde partie, nous allons examiner les outils mis à notre disposition afin de créer des formulair...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=47386" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/vko/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-978722883363182789</guid>
      <pubDate>Mon, 07 Dec 2009 16:17:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2009-12-07T17:46:08.418+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">SigmaT</category>
      <category domain="http://www.blogger.com/atom/ns#">TFS</category>
      <category domain="http://www.blogger.com/atom/ns#">Job</category>
      <category domain="http://www.blogger.com/atom/ns#">Bewise</category>
      <title>Des nouvelles de Bewise</title>
      <description>&lt;p&gt;Je ne vais pas parler d’asp.net aujourd’hui (et c’est pourtant pas l’envie qui m’en manque), mais vous donner quelques nouvelles de Bewise.&lt;/p&gt;  &lt;p&gt;Pour commencer, je vous informe que Bewise sera présent au prochain SigmaT, qui se déroulera ce vendredi 11 décembre à l’IRIT, à l’université Paul Sabatier de Toulouse. Ionut Milhalcea vous y présentera une session “Pratiques agiles avec Team Foundation Server 2010”. Pour plus d’informations, le programme se trouve à cette adresse : &lt;a title="http://www.sigmat.fr/dotclear/index.php?post/2009/11/24/Programme-du-SigmaT12" href="http://www.sigmat.fr/dotclear/index.php?post/2009/11/24/Programme-du-SigmaT12"&gt;http://www.sigmat.fr/dotclear/index.php?post/2009/11/24/Programme-du-SigmaT12&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Allez-y nombreux, et pensez à &lt;a href="http://www.sigmat.fr/dotclear/index.php?form/inscription"&gt;vous inscrire&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;En toute logique, après ce séminaire vous devriez être pris d’une envie irrésistible de venir travailler avec nous ! ;) Eh bien, sachez que c’est maintenant chose possible, puisque Bewise recrute ! Regardez les offres ci-dessous, et si vous pensez correspondre aux profils demandés n’hésitez pas à postuler.&lt;/p&gt;  &lt;h3&gt;Consultant Sharepoint&lt;/h3&gt;  &lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous recherchons un&amp;#160; &lt;b&gt;&lt;u&gt;consultant(e) Sharepoint&lt;/u&gt;&lt;/b&gt; ayant une bonne connaissance sur les technologies Microsoft maîtrisant les points suivants :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0p9W_GhAI/AAAAAAAABsE/GHQ80dtaOHs/s1600-h/clip_image002%5B51%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0p9p8_VQI/AAAAAAAABsI/1sfH0K2GTZY/clip_image002_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; WSS / MOSS&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0p-PXGOBI/AAAAAAAABsM/fGVhNGy-7H8/s1600-h/clip_image002%5B1%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[1]" border="0" alt="clip_image002[1]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0p-U2fueI/AAAAAAAABsQ/PsTXFV0Jukk/clip_image002%5B1%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; ASP.NET&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0p-2XtEyI/AAAAAAAABsU/UuopOmu4yXM/s1600-h/clip_image002%5B2%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[2]" border="0" alt="clip_image002[2]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0p_OnvYII/AAAAAAAABsY/yJyyYl8yhSI/clip_image002%5B2%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; SQL Server 2008&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0p_hOWlAI/AAAAAAAABsc/bXNyJuElKpI/s1600-h/clip_image002%5B3%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[3]" border="0" alt="clip_image002[3]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qAPAif-I/AAAAAAAABsg/8fc-UdpPmPk/clip_image002%5B3%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Architecture logicielle&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qAbrVRWI/AAAAAAAABsk/loTbeBEwgJo/s1600-h/clip_image002%5B4%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qAxnBGgI/AAAAAAAABso/rx1fZtMnbVI/clip_image002%5B4%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Microsoft .NET 2.0, 3.0, 3.5&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qBD2mFOI/AAAAAAAABss/Gga_1YgVeF0/s1600-h/clip_image002%5B5%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qBgWsSZI/AAAAAAAABsw/kFV2bmhH05c/clip_image002%5B5%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Visual C#.NET&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qBwLlJSI/AAAAAAAABs0/FnU05fBPvDI/s1600-h/clip_image002%5B6%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[6]" border="0" alt="clip_image002[6]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qCap36uI/AAAAAAAABs4/eAAPgbLTSO4/clip_image002%5B6%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Visual Studio 2008&lt;/p&gt;  &lt;p&gt;La connaissance de Sharepoint 2010 ou de MS CRM 4.0 serait un plus.&lt;/p&gt;  &lt;p&gt;Principales missions : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qCqXIHNI/AAAAAAAABs8/Vd7xk5AKzJk/s1600-h/clip_image002%5B7%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[7]" border="0" alt="clip_image002[7]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qDH_rNBI/AAAAAAAABtA/HSNxOa4BGok/clip_image002%5B7%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Architecture et Conception d’applications Web et portail collaboratifs&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qDRxmPaI/AAAAAAAABtE/pkWSQKIBub8/s1600-h/clip_image002%5B8%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[8]" border="0" alt="clip_image002[8]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qD4hbH5I/AAAAAAAABtI/1oJ5z_U56_A/clip_image002%5B8%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Développement, tests et livraison de solutions&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qEOK5g_I/AAAAAAAABtM/ezQr-uhnzKc/s1600-h/clip_image002%5B9%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[9]" border="0" alt="clip_image002[9]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qErPCKYI/AAAAAAAABtQ/mQNOkNrEQW0/clip_image002%5B9%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Animation de formation et de séminaires&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qE6RHcbI/AAAAAAAABtU/ejdvi1iMLIg/s1600-h/clip_image002%5B10%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[10]" border="0" alt="clip_image002[10]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qFKG5FhI/AAAAAAAABtY/PHVuDZULRtw/clip_image002%5B10%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Consulting sur les technologies Microsoft auprès de nos clients&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qFW2nsoI/AAAAAAAABtc/sgFqlULUNmU/s1600-h/clip_image002%5B11%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[11]" border="0" alt="clip_image002[11]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qF8abjDI/AAAAAAAABtg/ZPOpGYylOJw/clip_image002%5B11%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Gestion de projets&lt;/p&gt;  &lt;p&gt;Vous êtes autonome, rigoureux, pédagogue avec un bon sens du relationnel et passionné par les technologies Microsoft. &lt;/p&gt;  &lt;p&gt;Rémunération : selon profil&lt;/p&gt;  &lt;p&gt;Votre profil correspond à notre poste ? Vous avez envie de rejoindre une équipe dynamique à taille humaine dans le Sud Ouest ? Bewise a besoin de vous. &lt;/p&gt;  &lt;p&gt;Envoyez votre CV à &lt;a href="mailto:job@bewise.fr"&gt;job@bewise.fr&lt;/a&gt; en indiquant « [ConsultantMOSS2010] » dans le sujet du mail.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Consultant Business Intelligence Microsoft&lt;/h3&gt;  &lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous recherchons un &lt;b&gt;&lt;u&gt;consultant(e) décisionnel&lt;/u&gt;&lt;/b&gt; ayant une bonne connaissance sur les technologies Microsoft maîtrisant les points suivants :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qGVF6txI/AAAAAAAABtk/pubJAlK7RSU/s1600-h/clip_image002%5B12%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[12]" border="0" alt="clip_image002[12]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qGgY4BeI/AAAAAAAABto/Mq-nvB0ToKc/clip_image002%5B12%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; L’ensemble des technologies décisionnelles de Microsoft&lt;/p&gt;  &lt;p&gt;o SQL Server 2008 R2&lt;/p&gt;  &lt;p&gt;o Analysis Services&lt;/p&gt;  &lt;p&gt;o Integration Services&lt;/p&gt;  &lt;p&gt;o Reporting Services&lt;/p&gt;  &lt;p&gt;o Monitoring Server&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qHMx8_eI/AAAAAAAABts/tyubXssDvlI/s1600-h/clip_image002%5B13%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[13]" border="0" alt="clip_image002[13]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qHbE4OMI/AAAAAAAABtw/gY82pbI_Ya4/clip_image002%5B13%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; MOSS&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qHw2t6CI/AAAAAAAABt0/3x6uoC6PMkE/s1600-h/clip_image002%5B14%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[14]" border="0" alt="clip_image002[14]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qIElf_PI/AAAAAAAABt4/najlfiZ6GDM/clip_image002%5B14%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Architecture logicielle&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qIi9JHGI/AAAAAAAABt8/T8s7MNpC1Io/s1600-h/clip_image002%5B15%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[15]" border="0" alt="clip_image002[15]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qI4NzarI/AAAAAAAABuA/eR9pnTdte6s/clip_image002%5B15%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Microsoft .NET&lt;/p&gt;  &lt;p&gt;Principales missions : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qJZJ7agI/AAAAAAAABuE/v1Q0gtatBEw/s1600-h/clip_image002%5B16%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[16]" border="0" alt="clip_image002[16]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qJofbI9I/AAAAAAAABuI/AZWnLin_V-w/clip_image002%5B16%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Architecture et Conception de solutions décisionnelles&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qKFfU7rI/AAAAAAAABuM/S8P_chktE2c/s1600-h/clip_image002%5B17%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[17]" border="0" alt="clip_image002[17]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qKVvQa4I/AAAAAAAABuQ/r3YSS6hl7xY/clip_image002%5B17%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Développement, tests et livraison de solutions&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qK-fN-wI/AAAAAAAABuU/qp65mV4g3u0/s1600-h/clip_image002%5B18%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[18]" border="0" alt="clip_image002[18]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qLKYAroI/AAAAAAAABuY/RM9j6xzpsD8/clip_image002%5B18%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Animation de formation et de séminaires&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qLdy0j3I/AAAAAAAABuc/nuI5xYLPciQ/s1600-h/clip_image002%5B19%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[19]" border="0" alt="clip_image002[19]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qL6crejI/AAAAAAAABug/KFc4qL3f2R0/clip_image002%5B19%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Consulting sur les technologies Microsoft auprès de nos clients&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qMFdZpzI/AAAAAAAABuk/EDVpmCsXvtw/s1600-h/clip_image002%5B20%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[20]" border="0" alt="clip_image002[20]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qMrgXgjI/AAAAAAAABuo/Rgh7y_uYL3A/clip_image002%5B20%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Gestion de projets&lt;/p&gt;  &lt;p&gt;Vous êtes autonome, rigoureux, pédagogue avec un bon sens du relationnel et passionné par les technologies Microsoft. &lt;/p&gt;  &lt;p&gt;Rémunération : selon profil&lt;/p&gt;  &lt;p&gt;Votre profil correspond à notre poste ? Vous avez envie de rejoindre une équipe dynamique à taille humaine dans le Sud Ouest ? Bewise a besoin de vous. &lt;/p&gt;  &lt;p&gt;Envoyez votre CV à &lt;a href="mailto:job@bewise.fr"&gt;job@bewise.fr&lt;/a&gt; en indiquant « [ConsultantBI2010] » dans le sujet du mail.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Consultant sur les technologies Microsoft&lt;/h3&gt;  &lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous recherchons un&amp;#160; consultant(e) ayant une bonne connaissance sur les technologies de développement Microsoft maîtrisant les points suivants :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qM0WA7mI/AAAAAAAABus/HPO6mjh2QzQ/s1600-h/clip_image002%5B21%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[21]" border="0" alt="clip_image002[21]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qN3jlqNI/AAAAAAAABuw/VuR6oX1lgkc/clip_image002%5B21%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; SQL Server 2008&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qOHefTqI/AAAAAAAABu0/Rqha44a9A_c/s1600-h/clip_image002%5B22%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[22]" border="0" alt="clip_image002[22]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qOl5G-1I/AAAAAAAABu4/K9PbuEV37-I/clip_image002%5B22%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Architecture logicielle&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qO69iHVI/AAAAAAAABu8/bsKPH50muHA/s1600-h/clip_image002%5B23%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[23]" border="0" alt="clip_image002[23]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qPJXLuhI/AAAAAAAABvA/YfBE0i34ohU/clip_image002%5B23%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Microsoft .NET 2.0, 3.0, 3.5, 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qPtaM1jI/AAAAAAAABvE/B30d2TwwmCI/s1600-h/clip_image002%5B24%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[24]" border="0" alt="clip_image002[24]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qP_TkmkI/AAAAAAAABvI/eL3s129hmiM/clip_image002%5B24%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; ASP.NET, Ajax&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qQCvfBHI/AAAAAAAABvM/eBimP3PPFMU/s1600-h/clip_image002%5B25%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[25]" border="0" alt="clip_image002[25]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qQoEdSBI/AAAAAAAABvQ/7KNEgvHrWyg/clip_image002%5B25%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; WPF&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qQyuouvI/AAAAAAAABvU/hZ3aZ-Qe0Oo/s1600-h/clip_image002%5B26%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[26]" border="0" alt="clip_image002[26]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qRTuHjYI/AAAAAAAABvY/-LL2jxpD0RI/clip_image002%5B26%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; WCF&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qR9BFonI/AAAAAAAABvc/yJJfxLDCkcc/s1600-h/clip_image002%5B27%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[27]" border="0" alt="clip_image002[27]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qSBBwBvI/AAAAAAAABvg/A4--MWkr7fw/clip_image002%5B27%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; C#/VB&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qSqBDCOI/AAAAAAAABvk/k06uRi8Y7uE/s1600-h/clip_image002%5B28%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[28]" border="0" alt="clip_image002[28]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qS8GsFmI/AAAAAAAABvo/kD4vYBqLv6U/clip_image002%5B28%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Visual Studio 2008, 2010&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qTedVtwI/AAAAAAAABvs/33Me-Cx-BdQ/s1600-h/clip_image002%5B29%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[29]" border="0" alt="clip_image002[29]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qTrPUYII/AAAAAAAABvw/NenFEAXwgHk/clip_image002%5B29%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; TFS 2008, 2010&lt;/p&gt;  &lt;p&gt;La connaissance de C++, DirectX ou GDI serait un plus.&lt;/p&gt;  &lt;p&gt;Principales missions : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qUKKq6jI/AAAAAAAABv0/hUodqVoM3e8/s1600-h/clip_image002%5B30%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[30]" border="0" alt="clip_image002[30]" src="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qUSDCW2I/AAAAAAAABv4/sWLbMXQ7wyk/clip_image002%5B30%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Architecture et Conception de solutions décisionnelles&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qU4scahI/AAAAAAAABv8/KgrXwdn4xxc/s1600-h/clip_image002%5B31%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[31]" border="0" alt="clip_image002[31]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qVBC8XaI/AAAAAAAABwA/eevlnfjPgfs/clip_image002%5B31%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Développement, tests et livraison de solutions&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qVX0RfWI/AAAAAAAABwE/4iyDpcYm03o/s1600-h/clip_image002%5B32%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[32]" border="0" alt="clip_image002[32]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qVwzXQ9I/AAAAAAAABwI/KBmIjfIPLj0/clip_image002%5B32%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Animation de formation et de séminaires&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qWMXLslI/AAAAAAAABwM/BVRYFrYMNd4/s1600-h/clip_image002%5B33%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[33]" border="0" alt="clip_image002[33]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qWqUjo1I/AAAAAAAABwQ/Yn7WN9BeVFA/clip_image002%5B33%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Consulting sur les technologies Microsoft auprès de nos clients&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qW2aKpiI/AAAAAAAABwU/pVlYTtQ9E8M/s1600-h/clip_image002%5B34%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[34]" border="0" alt="clip_image002[34]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qXGGB9JI/AAAAAAAABwY/04CHdt2s6iI/clip_image002%5B34%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Gestion de projets&lt;/p&gt;  &lt;p&gt;Vous êtes autonome, rigoureux, pédagogue avec un bon sens du relationnel et passionné par les technologies Microsoft. &lt;/p&gt;  &lt;p&gt;Rémunération : selon profil&lt;/p&gt;  &lt;p&gt;Votre profil correspond à notre poste ? Vous avez envie de rejoindre une équipe dynamique à taille humaine dans le Sud Ouest ? Bewise a besoin de vous. &lt;/p&gt;  &lt;p&gt;Envoyez votre CV à &lt;a href="mailto:job@bewise.fr"&gt;job@bewise.fr&lt;/a&gt; en indiquant « [ConsultantNET2010] » dans le sujet du mail.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Consultant fonctionnel sur les technologies Microsoft&lt;/h3&gt;  &lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous recherchons un&amp;#160; &lt;b&gt;&lt;u&gt;consultant(e) fonctionnel&lt;/u&gt;&lt;/b&gt; ayant une bonne connaissance des technologies Microsoft. &lt;/p&gt;  &lt;p&gt;Vous connaissez les produits Microsoft suivants :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qXunl0pI/AAAAAAAABwc/vDIqHJZQGbQ/s1600-h/clip_image002%5B35%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[35]" border="0" alt="clip_image002[35]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qX6CZDDI/AAAAAAAABwg/GnK9xvWhX2s/clip_image002%5B35%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; MOSS&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qYes1-pI/AAAAAAAABwk/hkJKX5b13p8/s1600-h/clip_image002%5B36%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[36]" border="0" alt="clip_image002[36]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qYuPEj5I/AAAAAAAABwo/03xTLxDOwiA/clip_image002%5B36%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; MS CRM 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qZCAS3TI/AAAAAAAABws/vOMn1_swpZw/s1600-h/clip_image002%5B37%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[37]" border="0" alt="clip_image002[37]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qZgI7WiI/AAAAAAAABww/Kin4iCMYuIw/clip_image002%5B37%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; SQL Server Business Intelligence&lt;/p&gt;  &lt;p&gt;La connaissance des autres produits serveur de Microsoft (BizTalk Server, Team Foundation Server, etc.) serait un plus.&lt;/p&gt;  &lt;p&gt;Principales missions : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qZx7AJhI/AAAAAAAABw0/eEEYPXT8WLI/s1600-h/clip_image002%5B38%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[38]" border="0" alt="clip_image002[38]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qadFZuWI/AAAAAAAABw4/i6nT1e0IRhk/clip_image002%5B38%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; traduction des besoins utilisateurs en cahiers des charges, écriture de spécifications&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qapIo5JI/AAAAAAAABw8/8UpgKrRVnE4/s1600-h/clip_image002%5B39%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[39]" border="0" alt="clip_image002[39]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qa8zd_2I/AAAAAAAABxA/hyJuIVRdiH0/clip_image002%5B39%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; assistance à la définition des besoins et des solutions &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qbDhGa0I/AAAAAAAABxE/q4e8WqMm7wk/s1600-h/clip_image002%5B40%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[40]" border="0" alt="clip_image002[40]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qbgOzAZI/AAAAAAAABxI/AtAjj_TFx_U/clip_image002%5B40%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; accompagnement des utilisateurs sur la prise en main et la maîtrise des outils&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qb7IWDJI/AAAAAAAABxM/m0rlEak4jpA/s1600-h/clip_image002%5B41%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[41]" border="0" alt="clip_image002[41]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qcX5QD0I/AAAAAAAABxQ/rbyFqgw02q0/clip_image002%5B41%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; conseil en processus, en conduite de changement&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qcvwPnVI/AAAAAAAABxU/n4MXyVcNwh4/s1600-h/clip_image002%5B42%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[42]" border="0" alt="clip_image002[42]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qdGr1cbI/AAAAAAAABxY/gVhLVxTBarQ/clip_image002%5B42%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; animation de séminaires autour des technologies &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qdWeCfaI/AAAAAAAABxc/sis-TNMLrgk/s1600-h/clip_image002%5B43%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[43]" border="0" alt="clip_image002[43]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qdqtIIoI/AAAAAAAABxg/NE6cvexDLsc/clip_image002%5B43%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; participation aux avant-ventes. &lt;/p&gt;  &lt;p&gt;Vous avez un bon sens du relationnel, vous êtes pédagogue, vous avez de bonnes qualités rédactionnelles ?    &lt;br /&gt;Vous avez le sens du service, vous êtes méthodique et organisé ?     &lt;br /&gt;Vous êtes attiré par les technologies Microsoft ?&lt;/p&gt;  &lt;p&gt;Votre profil correspond à notre poste ? Vous avez envie de rejoindre une équipe dynamique à taille humaine dans le Sud Ouest ? Bewise a besoin de vous. &lt;/p&gt;  &lt;p&gt;Rémunération : selon profil&lt;/p&gt;  &lt;p&gt;Envoyez votre CV à &lt;a href="mailto:job@bewise.fr"&gt;job@bewise.fr&lt;/a&gt; en indiquant « [ConsultantFONC2010] » dans le sujet du mail.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Stagiaire&lt;/h3&gt;  &lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous recherchons un stagiaire qui travaillera sur les technologies de développement Microsoft, à savoir :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qeNCeqRI/AAAAAAAABxk/KQfDHwPnLM0/s1600-h/clip_image002%5B44%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[44]" border="0" alt="clip_image002[44]" src="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qecC90oI/AAAAAAAABxo/-8R2hRyp6U4/clip_image002%5B44%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Microsoft .NET 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1fIQLbpqRAw/Sx0qegflgKI/AAAAAAAABxs/8011NSx8bhU/s1600-h/clip_image002%5B45%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[45]" border="0" alt="clip_image002[45]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qfA8Ac7I/AAAAAAAABxw/u3Ub5pSdUPw/clip_image002%5B45%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; ASP.NET, WPF, WCF&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1fIQLbpqRAw/Sx0qfR0difI/AAAAAAAABx0/gjdllBSA_u0/s1600-h/clip_image002%5B46%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[46]" border="0" alt="clip_image002[46]" src="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qf1iKtmI/AAAAAAAABx4/F6wcy1Xv31U/clip_image002%5B46%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Visual Studio .NET 2010&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qgJphgfI/AAAAAAAABx8/iomO_GdWYKk/s1600-h/clip_image002%5B47%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[47]" border="0" alt="clip_image002[47]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qgjI6hmI/AAAAAAAAByA/IOaQu_5drLQ/clip_image002%5B47%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; SQL Server 2008R2&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0qg4A-qiI/AAAAAAAAByE/KrnKk6r8YLA/s1600-h/clip_image002%5B48%5D%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[48]" border="0" alt="clip_image002[48]" src="http://lh6.ggpht.com/_1fIQLbpqRAw/Sx0qhZBPzzI/AAAAAAAAByI/wefoS9m6MCQ/clip_image002%5B48%5D_thumb.gif?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; Sharepoint 2010&lt;/p&gt;  &lt;p&gt;Qualités attendues : autonomie, rigueur, passionné par les technologies et forte motivation.&lt;/p&gt;  &lt;p&gt;A l’heure actuelle le sujet de stage n’est pas complètement défini, mais fera intervenir plusieurs des technologies précédentes.&lt;/p&gt;  &lt;p&gt;La durée minimale du stage est de 3 mois ETP (stage de fin d’étude, contrat de professionnalisation en alternance). Le poste est à pourvoir en 2010.&lt;/p&gt;  &lt;p&gt;Vous avez envie de rejoindre une équipe sympa, jeune et dynamique ? Envoyez votre CV et votre lettre de motivation à &lt;a href="mailto:job@bewise.fr"&gt;job@bewise.fr&lt;/a&gt; en indiquant [StagiaireQ12010] dans le sujet du mail.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-978722883363182789?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2009/12/des-nouvelles-de-bewise.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_1fIQLbpqRAw/Sx0p9p8_VQI/AAAAAAAABsI/1sfH0K2GTZY/s72-c/clip_image002_thumb.gif?imgmax=800" height="72" width="72" />
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title>[Windows Mobile] Afficher une fen&amp;#234;tre lors d’une exception non g&amp;#233;r&amp;#233;e</title>
      <link>http://blogs.developpeur.org/vko/archive/2009/12/03/windows-mobile-afficher-une-fen-tre-lors-d-une-exception-non-g-r-e.aspx</link>
      <pubDate>Thu, 03 Dec 2009 18:14:42 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:47326</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>
      <comments>http://blogs.developpeur.org/vko/comments/47326.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=47326</commentRss>
      <description>
  
Personne n’est à l’abri d’une exception non gérée, c’est à dire une exception que vous n’avez pas “catché” et qui fait planter méchamment votre application. Heureusement il est possible de détecter ce type de plantage et d’afficher une fenêtre.
Pou...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=47326" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/vko/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category>
    </item>
    <item>
      <title>Layout pour Windows Mobile (Part 1)</title>
      <link>http://blogs.developpeur.org/vko/archive/2009/11/30/layout-pour-windows-mobile-part-1.aspx</link>
      <pubDate>Mon, 30 Nov 2009 21:00:00 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:47272</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">Vko</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>
      <comments>http://blogs.developpeur.org/vko/comments/47272.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/vko/commentrss.aspx?PostID=47272</commentRss>
      <description>
  
Windows Mobile est, contrairement à ce que l’on pourrait croire, une plateforme ultra complète pour le développement mobile : Compact Framework, office, téléphonie, connectivité, Bluetooth, GPS, notifications, gesture, Web Service, Threading …
Malg...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=47272" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/vko/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5619051591853320584.post-2242180640574693740</guid>
      <pubDate>Fri, 13 Nov 2009 14:28:00 +0000</pubDate>
      <updated xmlns="http://www.w3.org/2005/Atom">2009-11-13T15:44:26.790+01:00</updated>
      <category domain="http://www.blogger.com/atom/ns#">MVC</category>
      <title>ASP.NET MVC : Changer de ViewEngine (2/2)</title>
      <description>&lt;p&gt;Nous avons vu dans mon précédent post comment apporter des modifications au ViewEngine utilisé par défaut par MVC. Aujourd’hui, ça va se compliquer puisque nous allons voir ce qu’il est nécessaire de savoir pour créer un ViewEngine complet.&lt;/p&gt;  &lt;p&gt;Contrairement à ce que nous avons vu précédemment, où nous ne faisions qu’apporter des modification au WebFormViewEngine, cette fois nous aurons un contrôle total du code HTML qui sera généré, libre à vous d’utiliser des pages PHP ou de créer votre propre langage serveur ! Par contre, je ne vous cache pas que mettre ça en place vous demandera un peu plus de boulot que d’utiliser les webforms.&lt;/p&gt;  &lt;p&gt;Pour créer un nouveau View Engine from scratch, il va nous falloir implémenter 2 interfaces: IView, qui représentera nos vues (ce qui nous permettre de renvoyer le code html au client), et IViewEngine, qui nous servira à charger la vue correcte en fonction du contexte et du nom de la vue.&lt;/p&gt;  &lt;p&gt;Commençons par la vue : l’interface IView nous demande de faire une méthode Render, qui reçoit des informations dans le viewContext, et devra écrire le code HTML à renvoyer au client dans un TextWriter.&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Consolas"&gt;&lt;font size="1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;MyCompletelySpecificView&lt;/font&gt;&lt;font color="#000000"&gt; : &lt;/font&gt;&lt;font color="#2b91af"&gt;IView&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/font&gt;&lt;font color="#000000"&gt; IView Members          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#000000"&gt; Render(&lt;/font&gt;&lt;font color="#2b91af"&gt;ViewContext&lt;/font&gt;&lt;font color="#000000"&gt; viewContext, System.IO.&lt;/font&gt;&lt;font color="#2b91af"&gt;TextWriter&lt;/font&gt;&lt;font color="#000000"&gt; writer)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#008000"&gt;// on va faire notre rendu ici&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Nous avons ici toute liberté pour faire ce que nous voulons ! Nous allons par exemple aller chercher notre vue en base de données : pour cela, nous avons une table toute simple avec 2 colonnes : le nom de la vue, et le code HTML correspondant.&lt;/p&gt;  &lt;p&gt;Nous pouvons créer notre DatabaseView qui ira chercher en base de données le code html, au lieu de chercher un fichier.&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Consolas"&gt;&lt;font size="1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DatabaseView&lt;/font&gt;&lt;font color="#000000"&gt; : &lt;/font&gt;&lt;font color="#2b91af"&gt;IView&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#000000"&gt; viewName;          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt; DatabaseView(&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#000000"&gt; viewName)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;.viewName = viewName;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/font&gt;&lt;font color="#000000"&gt; IView Members          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#000000"&gt; Render(&lt;/font&gt;&lt;font color="#2b91af"&gt;ViewContext&lt;/font&gt;&lt;font color="#000000"&gt; viewContext, System.IO.&lt;/font&gt;&lt;font color="#2b91af"&gt;TextWriter&lt;/font&gt;&lt;font color="#000000"&gt; writer)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;font color="#2b91af"&gt;DatabaseViewsDataContext&lt;/font&gt;&lt;font color="#000000"&gt; context = &lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DatabaseViewsDataContext&lt;/font&gt;&lt;font color="#000000"&gt;())          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#2b91af"&gt;ViewContent&lt;/font&gt;&lt;font color="#000000"&gt; content = context.ViewContents.SingleOrDefault(v =&amp;gt; v.ViewName == viewName);          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;font color="#000000"&gt; (content != &lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; writer.Write(content.Text);           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Il ne nous reste plus qu’à créer le View Engine qui va bien, pour pouvoir appeler correctement nos vues. Nous avons 3 méthodes à implémenter : pour récupérer une vue, pour récupérer une vue partielle, et pour libérer la mémoire de notre vue.&lt;/p&gt;  &lt;div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid"&gt;   &lt;div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"&gt;&lt;font face=" Consolas"&gt;&lt;font size="1"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DatabaseViewEngine&lt;/font&gt;&lt;font color="#000000"&gt; : &lt;/font&gt;&lt;font color="#2b91af"&gt;IViewEngine&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/font&gt;&lt;font color="#000000"&gt; IViewEngine Members          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ViewEngineResult&lt;/font&gt;&lt;font color="#000000"&gt; FindPartialView(&lt;/font&gt;&lt;font color="#2b91af"&gt;ControllerContext&lt;/font&gt;&lt;font color="#000000"&gt; controllerContext, &lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#000000"&gt; partialViewName, &lt;/font&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;font color="#000000"&gt; useCache)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ViewEngineResult&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DatabaseView&lt;/font&gt;&lt;font color="#000000"&gt;(partialViewName), &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;);          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ViewEngineResult&lt;/font&gt;&lt;font color="#000000"&gt; FindView(&lt;/font&gt;&lt;font color="#2b91af"&gt;ControllerContext&lt;/font&gt;&lt;font color="#000000"&gt; controllerContext, &lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#000000"&gt; viewName, &lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#000000"&gt; masterName, &lt;/font&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;font color="#000000"&gt; useCache)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;ViewEngineResult&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DatabaseView&lt;/font&gt;&lt;font color="#000000"&gt;(viewName), &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;);          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#000000"&gt; ReleaseView(&lt;/font&gt;&lt;font color="#2b91af"&gt;ControllerContext&lt;/font&gt;&lt;font color="#000000"&gt; controllerContext, &lt;/font&gt;&lt;font color="#2b91af"&gt;IView&lt;/font&gt;&lt;font color="#000000"&gt; view)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#2b91af"&gt;IDisposable&lt;/font&gt;&lt;font color="#000000"&gt; disposableView = view &lt;/font&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;IDisposable&lt;/font&gt;&lt;font color="#000000"&gt;;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;font color="#000000"&gt; (disposableView != &lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; disposableView.Dispose();           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/font&gt;&lt;font color="#000000"&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;J’ai ici fait au plus simple, mais vous avez tout loisir pour faire plus compliqué si vous le désirez, pour gérer les vues mobiles, ou bien différentes langues. N’oubliez pas non plus de gérer le cache lorsqu’on vous le demande (et oui, refaire un ViewEngine, ça veut dire qu’il faut TOUT refaire).&lt;/p&gt;  &lt;p&gt;Voilà, vous avez toutes les clés en main pour créer votre propre View Engine, maintenant à vous de jouer !&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Cross-posté vers &lt;a href="http://www.techheadbrothers.com/"&gt;Tech Head Brothers&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5619051591853320584-2242180640574693740?l=blog.adhess.net' alt='' /&gt;&lt;/div&gt;</description>
      <link>http://blog.adhess.net/2009/11/aspnet-mvc-changer-de-viewengine-22.html</link>
      <author>noreply@blogger.com (Guillaume Lacasa)</author>
      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>
    </item>
    <item>
      <title><![CDATA[Perte de boutons sur Custom Ribbon Word /Excel]]></title>
      <link>http://vsto-sps.over-blog.com/article-33723216.html</link>
      <description><![CDATA[	Bonjour, Il peut vous arriver de customiser le Ribbon d'une application Word ou Excel lors d'un developpement VSTO. Avec SharePoint, il se peut que les boutons situés dans votre "Onglet" disparaissent lors d'un save, lorsque celui-ci n'a jamais été selectionné et ce avant le save par[...]]]></description>
      <pubDate>Sun, 12 Jul 2009 02:45:00 +0200</pubDate>
      <guid isPermaLink="false">95e42990fae2d413f8ed56e5e705d06a</guid>
      <category>Visual Studio Tool For Office</category>
      <comments>http://vsto-sps.over-blog.com/article-33723216-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Look4Tag Release]]></title>
      <link>http://dotnet.over-blog.fr/article-31559997.html</link>
      <description><![CDATA[	Look4Tag est un plugin Outlook qui permet de taguer les messages et de les trier au travers d’une interface ergonomique en WPF. Ce plugin s’adresse aux utilisateurs possédant un grand nombre de messages dans leur boite mail et désireux d’obtenir rapidement différentes vues de ce même ensemble.[...]]]></description>
      <pubDate>Mon, 18 May 2009 11:30:00 +0200</pubDate>
      <guid isPermaLink="false">2aab6f8765252d42e0f5b5316f711655</guid>
      <category>Vsto</category>
      <comments>http://dotnet.over-blog.fr/article-31559997-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[Techdays 2009] retour sur mes sessions au techdays 2009</title>
      <link>http://blogs.developpeur.org/musashi/archive/2009/04/26/techdays-2009-retour-sur-mes-sessions-au-techdays-2009.aspx</link>
      <pubDate>Sun, 26 Apr 2009 17:44:41 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:45011</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/45011.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=45011</commentRss>
      <description>
  Bonjour lecteur,  J’ai eu le plaisir d’animer deux sessions au techdays que vous pouvez retrouver ici :  RDA106 : WPF pour les développeurs Windows Forms  IND115 : Le cycle de vie des applications Web en détail  Au plaisir de lire vos remarques.  Musa...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=45011" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/Techdays/default.aspx">Techdays</category>
    </item>
    <item>
      <title><![CDATA[Customiser Visual Studio]]></title>
      <link>http://dotnet.over-blog.fr/article-30612096.html</link>
      <description><![CDATA[						<img class="imgExtraitCon" src="http://img.over-blog.com/100x100/2/36/82/82//screenshot-vs_thumb.png" alt="" />
				<br />
	Il est possible de customiser Visual Studio en partant d’un fichier .vssettings qui contient la configuration des font/couleurs. Histoire de vous mettre l’eau à la bouche, voici le résultat final. Ce package a été mis à disposition par rob conery, il contient les fichiers de configuration ainsi[...]]]></description>
      <pubDate>Fri, 24 Apr 2009 09:03:00 +0200</pubDate>
      <guid isPermaLink="false">aac3db495967541b2efd9f18bbb352a6</guid>
      <category>Visual Studio</category>
      <comments>http://dotnet.over-blog.fr/article-30612096-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Mise en cache de Page / User control]]></title>
      <link>http://dotnet.over-blog.fr/article-29824573.html</link>
      <description><![CDATA[	OutputCache permet de mettre en cache une page ou juste un user control. Cette instruction est typiquement utilisée pour le menu de votre site web. Il suffit de rajouter la ligne suivante dans l’entête. &lt;%@ OutputCache Duration="120" VaryByParam="none" %&gt; Mais que se passe t’il si votre[...]]]></description>
      <pubDate>Fri, 03 Apr 2009 15:30:00 +0200</pubDate>
      <guid isPermaLink="false">229a32c7bad87fb6741cc93d9b2fc3a2</guid>
      <category>ASP.NET</category>
      <comments>http://dotnet.over-blog.fr/article-29824573-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Bewise Day Conference 2009]]></title>
      <link>http://dotnet.over-blog.fr/article-29782511.html</link>
      <description><![CDATA[	Les innovations technologiques Microsoft pour les développeurs et les IT pro présentées par les meilleurs experts de Bewise et Microsoft ! Evénement gratuit destiné aux professionnels du développement et de l'IT, aux enseignants et étudiants, venez découvrir: 2 Sessions Plénières 8 Sessions[...]]]></description>
      <pubDate>Thu, 02 Apr 2009 14:17:00 +0200</pubDate>
      <guid isPermaLink="false">3e8417e23e388d71a4ad0bab18a32358</guid>
      <category>NEWS</category>
      <comments>http://dotnet.over-blog.fr/article-29782511-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[LINQ : Compiled Queries]]></title>
      <link>http://dotnet.over-blog.fr/article-29822074.html</link>
      <description><![CDATA[	Le processus d’exécution d’une requête LinqToSql est le suivant : Linq syntaxe =&gt; Expression Tree =&gt; SQL L’utilisation d’une compiled query permet de reprendre l’exécution d’une requête au niveau de l’expression Tree en cas d’exécution multiple afin d’accélérer le temps de réponse. Voici[...]]]></description>
      <pubDate>Sun, 22 Mar 2009 14:25:00 +0100</pubDate>
      <guid isPermaLink="false">655c3c8192f78ca2986176a3825cd5b8</guid>
      <category>LINQ</category>
      <comments>http://dotnet.over-blog.fr/article-29822074-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Transformations massives avec List(T).ConvertAll(TOutput)]]></title>
      <link>http://dotnet.over-blog.fr/article-29820646.html</link>
      <description><![CDATA[	Une des nouveautés du Framework 3.5 est la méthode d'extention ContertAll. Cette méthode permet de convertir chaque élément de la liste d’origine dans un nouveau type de sortie. Le binding est précisé dans une méthode anonyme qui retourne l’instance du nouveau type. Voici un exemple utilisant[...]]]></description>
      <pubDate>Tue, 03 Mar 2009 13:43:00 +0100</pubDate>
      <guid isPermaLink="false">f73d40636bfcf280fc040cf23eb86d14</guid>
      <category>C#</category>
      <comments>http://dotnet.over-blog.fr/article-29820646-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Masquer le "InformationPanel" sous Word / Excel avec VSTO]]></title>
      <link>http://vsto-sps.over-blog.com/article-27687753.html</link>
      <description><![CDATA[	Bonjour à tous, Un petit tips rapide afin de masquer le " InformationPanel " sur Excel ou Word (c'est la même chose). Ce panel est visible lorsque vous deployez votre addin sur un site SharePoint. Celui-ci affiche l'ensemble des ContentProperties (SharePoint) associés au document... Le modèle[...]]]></description>
      <pubDate>Sun, 08 Feb 2009 14:02:00 +0100</pubDate>
      <guid isPermaLink="false">355e33a341fc924a8ce2c7612772fe6e</guid>
      <category>Visual Studio Tool For Office</category>
      <comments>http://vsto-sps.over-blog.com/article-27687753-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Connaitre l’état d’un service d’une machine distante]]></title>
      <link>http://dotnet.over-blog.fr/article-29815842.html</link>
      <description><![CDATA[	Vous avez besoin de savoir si un service spécifique est démarré sur une machine distante ?, le namespace « Win32_Service » de WMI est là pour ca. ConnectionOptions aConnectionOptions = new ConnectionOptions(); aConnectionOptions.Username = domain + "\\" + login; aConnectionOptions.Password =[...]]]></description>
      <pubDate>Tue, 03 Feb 2009 11:12:00 +0100</pubDate>
      <guid isPermaLink="false">558101323061dac002d9324d335aee9b</guid>
      <category>WMI</category>
      <comments>http://dotnet.over-blog.fr/article-29815842-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Le club Microsoft en PACA !]]></title>
      <link>http://dotnet.over-blog.fr/article-29815415.html</link>
      <description><![CDATA[	Rejoignez nous au club MS Provence : « Face à l'intérêt toujours grandissant pour les technologies Microsoft dans notre région PACA et suite au constat du manque de lieu d'échange et de partage d'information à destination des passionnés et des utilisateurs de ces technologies, nous avons décidé[...]]]></description>
      <pubDate>Tue, 03 Feb 2009 11:04:00 +0100</pubDate>
      <guid isPermaLink="false">e3da7e44013ebeba846839eba3d29a7e</guid>
      <category>NEWS</category>
      <comments>http://dotnet.over-blog.fr/article-29815415-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Linq To SharePoint]]></title>
      <link>http://vsto-sps.over-blog.com/article-27402198.html</link>
      <description><![CDATA[	Marre du CAML ? Vous pouvez utiliser le Linq afin de requêter les listes SharePoint. . Exemple Requête Linq sur une liste SharePoint:La requete ci-dessous remontera les items selon le ContentType et 2 autres conditions. SPList selectedList = SPContext.Current.Site.RootWeb.Lists[ListName]; var[...]]]></description>
      <pubDate>Sat, 31 Jan 2009 23:49:00 +0100</pubDate>
      <guid isPermaLink="false">45aab63c0175dff380a9ec1d3996c328</guid>
      <category>SharePoint 2007</category>
      <comments>http://vsto-sps.over-blog.com/article-27402198-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Un nouveau blog vient de naître...]]></title>
      <link>http://vsto-sps.over-blog.com/article-27401120.html</link>
      <description><![CDATA[	Bonjour à tous, Un nouveau blog vient de naître... L'objectif de ce blog est de partager les différentes expériences que j'ai eu concernant les technologies SharePoint et VSTO.... J'espère que celui-ci pourra vous donner des axes de recherches concrets lors des différents travaux que vous[...]]]></description>
      <pubDate>Sat, 31 Jan 2009 23:04:00 +0100</pubDate>
      <guid isPermaLink="false">9c54e06cab2a5998b73d3e53c6aa8534</guid>
      <category>Divers</category>
      <comments>http://vsto-sps.over-blog.com/article-27401120-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[WPF] – Accéder à la boucle de rendu en WPF !</title>
      <link>http://blogs.developpeur.org/musashi/archive/2009/01/27/wpf-acc-der-la-boucle-de-rendu-en-wpf.aspx</link>
      <pubDate>Tue, 27 Jan 2009 21:03:10 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:43647</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/43647.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=43647</commentRss>
      <description>
  
    
      
       Un petit post rapide pour répondre à une question que l’on me pose souvent concernant WPF. Peut-on, comme en DirectX, accéder à la boucle de rendu qui par défaut est masquée ?  Pour être claire on accède pas directement à la bou...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=43647" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/WPF/default.aspx">WPF</category>
    </item>
    <item>
      <title>Analyse des performances des Applications Windows MOBILE</title>
      <link>http://blogs.developpeur.org/musashi/archive/2009/01/25/analyse-des-performances-des-applications-windows-mobile.aspx</link>
      <pubDate>Sun, 25 Jan 2009 17:18:18 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:43618</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/43618.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=43618</commentRss>
      <description>
  Un petit post pour vous faire part d’un mini-tutoriel sur comment analyser les performances d’une application mobile Windows Mobile (basé sur Windows CE).  Vous trouverez, donc,  ci-dessous les outils disponibles pour l’analyse des performances sur un...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=43618" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title><![CDATA[Gérez vos services Windows en 1 click : ProfileManager]]></title>
      <link>http://sharepoint.over-blog.fr/article-23751089.html</link>
      <description><![CDATA[	Et voici un nouveau venu dans la famille des outils de mon cru : ProfileManager. Son objectif : vous permettre de démarrer et d'arrêter un ou plusieurs services Windows en un click. Pour plus de détail, je vous renvoie vers les liens suivants : - Description en français sur le site de Bewise -[...]]]></description>
      <pubDate>Wed, 15 Oct 2008 07:58:00 +0200</pubDate>
      <guid isPermaLink="false">13f75fa2e12dfab339121c97b49992a7</guid>
      <category>Tools</category>
      <comments>http://sharepoint.over-blog.fr/article-23751089-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Modèles limités à 10 Mo]]></title>
      <link>http://sharepoint.over-blog.fr/article-22916207.html</link>
      <description><![CDATA[	Vous avez tous déjà du rencontrer cette problématique : vous souhaitez sauvegarder une liste ou un site comme template en incluant le contenu et là, problème : votre template dépasse la limite de 10 Mo fixée par SharePoint ! Alors, voici la petite astuce qui va vous permettre de modifier cette[...]]]></description>
      <pubDate>Thu, 18 Sep 2008 11:47:00 +0200</pubDate>
      <guid isPermaLink="false">e75bcb9b8ebbca3fc17b8cce564d6dfe</guid>
      <category>Truc et Astuce</category>
      <comments>http://sharepoint.over-blog.fr/article-22916207-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[WPF] - DataBinding - Part 2 - Les collections, les items, les listes et le changement de valeur dans le DataBinding</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/07/03/wpf-databinding-part-2-les-collections-les-items-les-listes-et-le-changement-de-valeur-dans-le-databinding.aspx</link>
      <pubDate>Thu, 03 Jul 2008 07:36:56 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:40359</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/40359.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=40359</commentRss>
      <description>
  Lorsque l'on souhaite développer une application de gestion, l'une des premières tâches effectuées est la liaison de données entre une collection(d'objet métier) et des contrôles visuelles: une liste déroulante, une liste de données. Il est alors poss...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=40359" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/WPF/default.aspx">WPF</category>
    </item>
    <item>
      <title>[BDC2008] -La Bewise Developer Conference 2008 c'est fini , Merci à tous les participants et retrouvez les WebCasts....</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/04/22/bdc2008-la-bewise-developer-conference-2008-c-est-fini-merci-tous-les-participants-et-retrouvez-les-webcasts.aspx</link>
      <pubDate>Tue, 22 Apr 2008 19:02:59 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:38928</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/38928.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=38928</commentRss>
      <description>
  La BDC 2008 terminé, vous pouvez désormais retrouver tous les WebCasts des sessions en ligne à cette adresse : Les WebCasts   La session plénière avec 1h15 de Silverlight 2, DeepZoom, WCF, ASP.NET Dynamic Data et autres LINQ, un bonheur pour le speake...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=38928" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/BDC/default.aspx">BDC</category>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/BDC+2008/default.aspx">BDC 2008</category>
    </item>
    <item>
      <title>[Silverlight 2] - Ajouter un effet de RollOver sur un bouton</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/04/14/silverlight-2-ajouter-un-effet-de-rollover-sur-un-bouton.aspx</link>
      <pubDate>Mon, 14 Apr 2008 19:31:56 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:38702</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/38702.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=38702</commentRss>
      <description>
  Un des effets sympa que l'on utilise très courament c'est le rollover sur un bouton. En quoi cela consiste pour le néophyte ? C'est simplement le fait d'appliquer une modification visuelle sur un objet dés que la souris passe dessus. Alors comme ça c'...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=38702" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/Silverlight/default.aspx">Silverlight</category>
    </item>
    <item>
      <title><![CDATA[SPViewPermissionSetting, c'est parti !]]></title>
      <link>http://sharepoint.over-blog.fr/article-17866027.html</link>
      <description><![CDATA[	Bon, ne pouvant m'empêcher de vouloir mettre à disponibilité cette nouvelle feature le plus rapidement possible, j'ai donc travaillé pour vous hier soir. J'ai terminé les tests et le setup de SPViewPermissionSetting (cf. post ci-dessous pour le détail fonctionnel) pour vous permettre de la[...]]]></description>
      <pubDate>Wed, 19 Mar 2008 10:41:00 +0100</pubDate>
      <guid isPermaLink="false">7f89decb8d120677ff58fcdf9015542b</guid>
      <category>News</category>
      <comments>http://sharepoint.over-blog.fr/article-17866027-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Gérer les droits et définir une vue par défaut par groupe : SPViewPermissionSetting]]></title>
      <link>http://sharepoint.over-blog.fr/article-17845499.html</link>
      <description><![CDATA[						<img class="imgExtraitCon" src="http://img.over-blog.com/100x100/1/10/05/44/Tools-pictures/SPViewPermissionSetting/SPViewPermissionSetting0.gif" alt="" />
				<br />
	Motivé par le succès (tout relatif, il faut le reconnaître) de mon dernier développement (SPListDisplaySetting), je me suis lancé un nouveau défit. Une question revient régulièrement sur les forums et autres newsgroups demandant comment il est possible de filtrer les vues d'une liste accessible[...]]]></description>
      <pubDate>Tue, 18 Mar 2008 18:09:00 +0100</pubDate>
      <guid isPermaLink="false">9b0111a37ccc94bbbe87dffcfa73d815</guid>
      <category>Tools</category>
      <comments>http://sharepoint.over-blog.fr/article-17845499-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[Silverlight 2] - De la 3D en Silverlight - Découvrez un moteur 3D Soft entièrement en Silverlight 2</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/03/11/silverlight-2-de-la-3d-en-silverlight-d-couvrez-un-moteur-3d-soft-enti-rement-en-silverlight-2.aspx</link>
      <pubDate>Tue, 11 Mar 2008 13:46:39 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:37834</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">5</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/37834.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=37834</commentRss>
      <description>
  Je ne le ferais pas souvent mais fort est de constater que là, j'ai été très impressionné par le travail réalisé par mon Jedi Master donc je vous transmet l'info.  Un moteur 3D entièrement en Silverlight. la démonstration est impressionante !!  Son bl...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=37834" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/Silverlight/default.aspx">Silverlight</category>
    </item>
    <item>
      <title>[BDC 2008] - Toute la France se donne rendez-vous à la Bewise Developer Conference qui aura lieu a Toulouse le 10 Avril 2008</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/03/11/bdc-2008-toute-la-france-se-donne-rendez-vous-la-bewise-developer-conference-qui-aura-lieu-a-toulouse-le-10-avril-2008.aspx</link>
      <pubDate>Tue, 11 Mar 2008 10:14:00 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:37735</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/37735.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=37735</commentRss>
      <description>
  La BDC c'est des sessions, des nouveautés, un jeux concours avec une TV LCD de 94 cm à gagner  .... mais surtout plein de SQL Server 2008, SharePoint, ASP.NET, Team System et beaucoup, beaucoup de Silverlight 2

Le détail du contenu de l'évènement l...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=37735" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/BDC+2008/default.aspx">BDC 2008</category>
    </item>
    <item>
      <title><![CDATA[Bewise Developer Conference 2008 (BDC)]]></title>
      <link>http://sharepoint.over-blog.fr/article-17565042.html</link>
      <description><![CDATA[						<img class="imgExtraitCon" src="http://img.over-blog.com/100x100/1/10/05/44//BDC2008.jpg" alt="" />
				<br />
	Bonjour à tous, Vous êtes sur Toulouse le 10 avril 2008 ? Vous êtes fan des technologies Microsoft ou simplement très curieux ? Alors, ne cherchez plus, c'est là que vous devrez être. Après le succès retentissant de la BDC 2007 avec plus de 300 visiteurs, Bewise remet le couvert et vous invite[...]]]></description>
      <pubDate>Tue, 11 Mar 2008 08:42:00 +0100</pubDate>
      <guid isPermaLink="false">3c691565d383ad370eab055dda4918e5</guid>
      <category>News</category>
      <comments>http://sharepoint.over-blog.fr/article-17565042-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[Silverlight 2.0] - Premier pas et première application avec Silverlight 2.0</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/03/06/silverlight-2-0-premier-pas-et-premi-re-application-avec-silverlight-2-0.aspx</link>
      <pubDate>Thu, 06 Mar 2008 09:42:54 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:37734</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/37734.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=37734</commentRss>
      <description>
  Vous l'avez surement appris, Silverlight 2.0 vient de sortir suite à l'annonce du MIX 2008. Vous pouvez télécharger tout ce qui vous est nécessaire au développement d'une application Silverlight 2.0 à ces différents liens:     Silverlight 2.0 SDK     ...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=37734" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/Silverlight/default.aspx">Silverlight</category>
    </item>
    <item>
      <title><![CDATA[SPListDisplaySetting v1.0.0.0]]></title>
      <link>http://sharepoint.over-blog.fr/article-17278096.html</link>
      <description><![CDATA[	Voilà, ça y est, la première version de mon nouveau bébé est enfin prête (cf. post "SPListDisplaySetting ... coming soon"). Vous pouvez télécharger cette version soit depuis ici, soit depuis CodePlex. L'installation doit être réalisée directement sur un serveur SharePoint (WSS 3.0 ou MOSS) avec[...]]]></description>
      <pubDate>Mon, 03 Mar 2008 08:12:00 +0100</pubDate>
      <guid isPermaLink="false">cd8e11065a44c35f8534ad9ee658076a</guid>
      <category>Tools</category>
      <comments>http://sharepoint.over-blog.fr/article-17278096-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[WPF] – Facilitez-vous le Databinding entre WPF et LINQ </title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/03/02/wpf-facilitez-vous-le-databinding-entre-wpf-et-linq.aspx</link>
      <pubDate>Sun, 02 Mar 2008 19:00:52 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:37646</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/37646.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=37646</commentRss>
      <description>
  Je souhaitais vous faire profiter d'une petite méthode utilitaire que j'ai réalisé cette semaine pour me faciliter la vie dans mes projets.

  Si comme moi vous utilisez LINQ régulièrement et que vous l'utilisez dans le cadre de projet WPF, vous aim...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=37646" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/WPF/default.aspx">WPF</category>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/LINQ/default.aspx">LINQ</category>
    </item>
    <item>
      <title><![CDATA[Intégration de modèles de WebPartPage dans WSS 3.0]]></title>
      <link>http://sharepoint.over-blog.fr/article-17115912.html</link>
      <description><![CDATA[	Un post rapide pour faire un peu de propagande pour l'article d'un collègue concernant l'intégration de custom WebPartPage dans Windows SharePoint Services 3.0. Vous pouvez le consulter d'ici : http://www.bewise.fr/download/articles/article-56.doc. N'hésitez pas à l'encourager, c'est son[...]]]></description>
      <pubDate>Wed, 27 Feb 2008 17:01:00 +0100</pubDate>
      <guid isPermaLink="false">9182e2f763c8fff3691e3208cd5c938a</guid>
      <category>Developpement</category>
      <comments>http://sharepoint.over-blog.fr/article-17115912-6.html#anchorComment</comments>
    </item>
    <item>
      <title>[WPF] - DATABINDING - PART 1 - Instancier et utiliser ses objets (du domaine) en vue du DataBinding</title>
      <link>http://blogs.developpeur.org/musashi/archive/2008/02/06/wpf-databinding-part-1-instancier-et-utiliser-ses-objets-du-domaine-en-vue-du-databinding.aspx</link>
      <pubDate>Wed, 06 Feb 2008 13:54:22 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:37115</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/37115.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=37115</commentRss>
      <description>
  Pour ce premier opus, d' une série ou nous étudierons le Databinding en WPF, j'ai choisi de présenter les différents moyens d' instancier et d' utiliser ses classes (du domaine par exemple) en XAML.  Nous verrons dans ce post les éléments suivants :  ...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=37115" width="1" height="1"&gt;</description>
      <category domain="http://blogs.developpeur.org/musashi/archive/tags/WPF/default.aspx">WPF</category>
    </item>
    <item>
      <title><![CDATA[SPListDisplaySetting ... coming soon]]></title>
      <link>http://sharepoint.over-blog.fr/article-16335217.html</link>
      <description><![CDATA[						<img class="imgExtraitCon" src="http://img.over-blog.com/100x100/1/10/05/44/Tools-pictures/SPListDisplaySettings/SPListDisplaySetting.jpg" alt="" />
				<br />
	Je travail actuellement sur une feature pour SharePoint permettant à un end-user de customiser le rendu d'un élément d'une liste SharePoint que ce soit en création, modification ou consultation. Voici en avant-première les premiers screenshots de cette future fonctionnalité. [Screenshot 1 :[...]]]></description>
      <pubDate>Tue, 05 Feb 2008 11:57:00 +0100</pubDate>
      <guid isPermaLink="false">341d9b79105ddaa885e0d402ce87983f</guid>
      <category>Tools</category>
      <comments>http://sharepoint.over-blog.fr/article-16335217-6.html#anchorComment</comments>
    </item>
    <item>
      <title>Mon premier post sur mon Blog Technico-chef de projet</title>
      <link>http://blogs.developpeur.org/musashi/archive/2007/11/16/mon-premier-post-sur-mon-blog-technico-chef-de-projet.aspx</link>
      <pubDate>Fri, 16 Nov 2007 11:33:11 GMT</pubDate>
      <guid isPermaLink="false">7d6e5d3c-61cc-4264-bc3a-a336023fcec4:35656</guid>
      <creator xmlns="http://purl.org/dc/elements/1.1/">musashi</creator>
      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">5</comments>
      <comments>http://blogs.developpeur.org/musashi/comments/35656.aspx</comments>
      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.developpeur.org/musashi/commentrss.aspx?PostID=35656</commentRss>
      <description>
  Bonjour à tous  après plusieurs mois d' hésitation je n' ai pu résister à l' appel de l' ouverture d' un blog technique.  Alors technique oui mais pas que, en effet, je suis consultant sur les technos Microsoft et la majeure partie de mon travail cons...&lt;img src="http://blogs.developpeur.org/aggbug.aspx?PostID=35656" width="1" height="1"&gt;</description>
    </item>
    <item>
      <title><![CDATA[Enfin …]]></title>
      <link>http://sharepoint.over-blog.fr/article-13086959.html</link>
      <description><![CDATA[	Pour une fois, ce petit post n'a rien à voir avec SharePoint. C'est juste pour annoncer que, enfin, il est possible de blogger sur over-blog en utilisant Word 2007. Et ça, c'est du bonheur … lol.Laurent(Aka Suchii)]]></description>
      <pubDate>Mon, 15 Oct 2007 12:51:00 +0200</pubDate>
      <guid isPermaLink="false">0cd63c8988f6fcaa1c23ab19782726a3</guid>
      <category>News</category>
      <comments>http://sharepoint.over-blog.fr/article-13086959-6.html#anchorComment</comments>
    </item>
    <item>
      <title><![CDATA[Lancer une recherche dans MOSS depuis Vista]]></title>
      <link>http://sharepoint.over-blog.fr/article-12846499.html</link>
      <description><![CDATA[						<img class="imgExtraitCon" src="http://img.over-blog.com/100x100/1/10/05/44//gpeditmsc-copie-1.jpg" alt="" />
				<br />
	Il est possible d'intégrer directement dans Vista la recherche dans un site SharePoint. Comment ? Voici ce qu'il vous faut faire (Attention : vous devez êtres administrateur du poste) : Cliquez sur le logo "démarrer" de Vista, Rechercher le programme Gpedit.msc et ouvrez le, Naviger jusqu'au[...]]]></description>
      <pubDate>Fri, 05 Oct 2007 09:53:00 +0200</pubDate>
      <guid isPermaLink="false">0acb4202de6130b12f732ac23d2b7499</guid>
      <category>Truc et Astuce</category>
      <comments>http://sharepoint.over-blog.fr/article-12846499-6.html#anchorComment</comments>
    </item>
  </channel>
</rss>
