<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Patrice Manac'h Web Log : .Net</title><link>http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx</link><description>Tags: .Net</description><dc:language>fr-FR</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Rejouer des requ&amp;#234;tes SOAP</title><link>http://blogs.msdn.com/pmanach/archive/2009/03/11/rejouer-des-requ-tes-soap.aspx</link><pubDate>Wed, 11 Mar 2009 15:45:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9470430</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/9470430.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=9470430</wfw:commentRss><description>&lt;p&gt;Un problème assez courant en dev : comment rejouer des requêtes SOAP, afin de reproduire un scénario (cas d’erreur à reproduire, développement sans accès à l’infrastructure, etc). Le premier outil qui vient à l’esprit est &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt;. Le souci avec cet outil est que lorsque l’on veut rejouer une trace, les règles travaillent sur les urls, et donc les query string. En mode SOAP, le client poste sur une url unique, et Fiddler a du mal à s'y retrouver.&lt;/p&gt;  &lt;p&gt;Il existe deux autres outils : &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=F5EC767F-27F2-4FB3-90A5-4BF0D5F4810A&amp;amp;displaylang=en"&gt;strace&lt;/a&gt; et &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=d25ba362-c17b-4d80-a677-1faff862e629&amp;amp;displaylang=en"&gt;httpreplay&lt;/a&gt;. Le premier permet de capturer des échanges entre un client et un serveur. Le second permet de rejouer ces traces. Il permet de rejouer aussi les traces de Fiddler. Pour rejouer mes traces, déjà prises avec Fiddler, j’ai donc installé HttpReplay. Pius j’ai récupéré l’archive Fiddler, l’ai renommé en zip, et ai extrait le sous-répertoire raw.&lt;/p&gt;  &lt;p&gt;En allant dans le répertoire d’installation de HttpReplay, j’ai lancé la commande suivante :&lt;/p&gt;  &lt;p&gt;&lt;em&gt;SOCKTRC.EXE /s:81 /e:HTTPREPLAY.DLL /LOG:c:\temp\raw /RESPECTPOST&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;avec :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;/s:81, pour que l’outil écoute sur le port 81. &lt;/li&gt;    &lt;li&gt;/e:HTTPREPLAY.DLL, pour préciser que le plugin httpreplay doit être utiliser. &lt;/li&gt;    &lt;li&gt;/LOG:c:\temp\raw, pour préciser le répertoire contenant les traces. &lt;/li&gt;    &lt;li&gt;/RESPECTPOST, pour préciser que la mise en correspondance entre un appel et sa réponse doit tenir compte du corps de la demande, et pas simplement de l’URI. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ultime point à ne pas oublier avant de lancer le client du Web Service, positionner le proxy du poste à localhost, port 81:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/RejouerdesrequtesSOAP_C10B/image_2.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://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/RejouerdesrequtesSOAP_C10B/image_thumb.png" width="400" height="352" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Et après, j’ai pu retester tout mon scénario dans une VPC sans avoir besoin d’être réellement connecté au serveur :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/RejouerdesrequtesSOAP_C10B/image_4.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://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/RejouerdesrequtesSOAP_C10B/image_thumb_1.png" width="684" height="349" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Simple mais efficace…&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9470430" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Ouvrir une fenêtre WPF sans menu système</title><link>http://blogs.msdn.com/pmanach/archive/2008/07/22/ouvrir-une-fen-tre-wpf-sans-menu-syst-me.aspx</link><pubDate>Tue, 22 Jul 2008 19:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8764432</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/8764432.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=8764432</wfw:commentRss><description>&lt;P&gt;Mais avec une barre de titre, bien entendu :)&lt;/P&gt;
&lt;P&gt;Par défaut, on peut ouvrir une fenêtre sans décoration, ou alors avec une barre de titre standard (menu système, boutons de redimmensionnement et de fermeture). Mais si on veut la barre de titre sans le reste, c'est un peut plus embêtant. On peut toujours jouer sur la propriété&amp;nbsp;&lt;FONT color=#ff0000&gt;ResizeMode&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;="NoResize"&lt;/FONT&gt;&lt;/FONT&gt; pour supprimer deux des trois boutons. Mais le bouton Close est du genre résistant :)&lt;/P&gt;
&lt;P&gt;Pour le faire disparaître, il faut en fait faire un peut d'interop et surcharger la méthode &lt;FONT size=2&gt;OnSourceInitialized de l'objet Window :&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt; Raises the SourceInitialized event. Overrided to cancel the close button.&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;/summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;///&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;param name="e"&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;An EventArgs that contains the event data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;/param&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;protected&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;override&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; OnSourceInitialized(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;EventArgs&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;base&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;.OnSourceInitialized(e);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;// D‚sactive le menu systŠme de la fenˆtre&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;IntPtr&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; hwnd = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;WindowInteropHelper&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;).Handle;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; windowLong = GetWindowLong(hwnd, -16);&lt;/P&gt;
&lt;P&gt;SetWindowLong(hwnd, -16, windowLong ^ WS_SYS_MENU); &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;Et voila :)&lt;/P&gt;
&lt;P&gt;Bon, il ne faut pas oublier de déclarer les deux API utilisées :&lt;/P&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;DllImport&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"user32.dll"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;)]&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;extern&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; SetWindowLong(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;IntPtr&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; hWnd, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; nIndex, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; dwNewLong);&lt;/P&gt;
&lt;P&gt;[&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;DllImport&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"user32.dll"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;)]&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;extern&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; GetWindowLong(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#2b91af size=2&gt;IntPtr&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; hWnd, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; nIndex);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;const&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; WS_SYS_MENU = 0x00080000;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8764432" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Erreur lors de la migration d'un projet Web de Visual Studio 2005 à Visual Studio 2008</title><link>http://blogs.msdn.com/pmanach/archive/2008/01/02/erreur-lors-de-la-migration-d-un-projet-web-de-visual-studio-2005-visual-studio-2008.aspx</link><pubDate>Wed, 02 Jan 2008 17:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6955379</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/6955379.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=6955379</wfw:commentRss><description>&lt;P&gt;C'est une erreur qui risque d'être assez courante. Vous ouvrez un projet&amp;nbsp; web créé avec Visual Studio 2005 avec Visual Studio 2008. Ce dernier vous propose de migrer le projet, d'éventuellement le passer en .Net 3.5 et de faire une copie de sauvegarde. Mais que vous le laissiez en .Net 2.0 ou le passiez en .Net 3.5, à la compilation, vous vous prenez systématiquement l'erreur "&lt;A id=viewpost.ascx_TitleUrl href="http://blogs.wwwcoder.com/shaunakp/archive/2005/03/25/2503.aspx"&gt;It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level This error can be caused by a virtual directory not being configured as an application in IIS.&lt;/A&gt;". Alors que cela fonctionnait très bien avec la version précédente de Visual Studio :(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Ici, le problème vient en fait de la copie de sauvegarde : dans le répertoire créé par l'assistant pour la sauvegarde, il y a une copie du fichier web.config qui conserve son extension. Lors de la compilation, VS2008 détecte la présence d'un fichier de configuration dans un sous-répertoire, tente de le prendre en compte, et tombe sur des directives qui ne sont pas autorisées dans un sous-répertoire. Soyez radical : déplacez ce répertoire de sauvegarde dans un autre répertoire, mais ne le laissez pas comme sous-répertoire de votre projet Web. Cela devrait beaucoup mieux se passer à la compilation :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6955379" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Wix et les custom actions .Net</title><link>http://blogs.msdn.com/pmanach/archive/2008/01/01/wix-et-les-custom-actions-net.aspx</link><pubDate>Tue, 01 Jan 2008 12:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6933416</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/6933416.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=6933416</wfw:commentRss><description>&lt;P&gt;Bien que je n'en ai pas eu besoin pour mes tests, il y a des cas où appeler une custom action écrite en .Net reste nécessaire. Dans ce cas, pour appeler le code associé à un objet ProjectInstaller, vous pouvez toujours suivre la démarche suivante : &lt;A href="http://blog.vagmim.com/2004/09/installing-windows-services-created.html"&gt;http://blog.vagmim.com/2004/09/installing-windows-services-created.html&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6933416" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Visual Studio 2003, Vista et les Custom Actions</title><link>http://blogs.msdn.com/pmanach/archive/2007/12/31/visual-studio-2003-vista-et-les-custom-actions.aspx</link><pubDate>Mon, 31 Dec 2007 15:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6926940</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/6926940.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=6926940</wfw:commentRss><description>&lt;P&gt;toujours dans mes tests de compatibilité du Framework .Net 1.1 avec Vista (version 64 bits, qui plus est), je suis passé aux tests de projets de type setup. Je sais que VS2003 n'est pas supporté sous Vista, mais il faut parfois s'assurer que certains scénarios continuent de fonctionner. Et en l'occurence, le msi produit par VS ne devrait pas avoir de dépendance particulière à l'OS. Sauf que si :(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Je ne parle pas d'une condition triviale dans le projet setup qui testerait que l'os est un XP (version 5.1) au lieu de tester toute version supérieure ou égale à 5.1 pour embarquer les versions 6 et plus dans la foulée.&amp;nbsp;Pour cela, si on a encore le projet, on peut changer le test. Et dans le cas contraire, on peut essayer de jouer avec les modes de compatiblités. Mais dans mon cas de figure, rien de tout cela :&amp;nbsp;lors de&amp;nbsp;l'installation de mon service via le msi généré, je me suis retrouvé avec un échec systématique et un erreur 11708 dans le journal d'événement sans information exploitable. Et&amp;nbsp;l'indice de&amp;nbsp;fiabilité de mon poste dégringolant à toute vitesse :(&lt;/P&gt;
&lt;P&gt;En fouillant un peu, je suis tombé sur l'article&amp;nbsp;suivant : &lt;A href="http://arnshea.spaces.live.com/blog/cns!32B8884142441255!220.entry" mce_href="http://arnshea.spaces.live.com/blog/cns!32B8884142441255!220.entry"&gt;http://arnshea.spaces.live.com/blog/cns!32B8884142441255!220.entry&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Il semble en fait que dans le msi généré par VS 2003, un&amp;nbsp;flag d'impersonification soit mal positionné au niveau des actions personalisées, ce qui passe&amp;nbsp;sans problème sous XP ou 2003, mais se fait toper par l'UAC sous Vista. A priori, ce problème concernairait aussi les msi généré par Visual Studio 2005 RTM. N'ayant plus que&amp;nbsp;des versions SP1+Vista fix, je n'ai pas pu faire le test. Par contre, j'ai testé les configurations suivantes :&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Intégration du manifest dans l'exécutable puis génération du MSI avec VS 2003. Contrairement à ce que laisse entendre l'article, il y a moyen d'automatiser l'opération (cf ThemeMe sur &lt;A href="http://www.msjogren.net/dotnet/eng/tools/" mce_href="http://www.msjogren.net/dotnet/eng/tools/"&gt;http://www.msjogren.net/dotnet/eng/tools/&lt;/A&gt;). Mais pas moyen de passer la protection DEP sous Vista 64 bits. Je suppose donc que cela doit marcher avec un Vista 32 bits mais comme j'ai besoin de toutes les configurations, cela ne me convient pas.&lt;/LI&gt;
&lt;LI&gt;Génération du msi avec un VS 2005+SP1+Vista fix (j'ai un doute sur l'utilité réelle de ce fix pour ce problème spécifique, mais passons). Victoire (de courte durée), le service s'installe bien sous Vista 64, les custom actions sont lancées (elles démarrent le service), et la désinstallation marche bien. Oui mais sur un XP 32 bits sans le Framework 2.0, une agaçante popup apparaît au lancement du msi :(&lt;/LI&gt;
&lt;LI&gt;Idem que précédement mais en modifiant la condition pour demander une v1.1 du Framework (avec ou sans support d'une version ultérieure). Cela marche bien sur mon XP, mais plante sur mon Vista. Grrr....&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Bon, je suppose que dans le dernier cas, en jouant avec Orca, on doit pouvoir faire sauter la dépendance, mais comme ce n'est pas automatisable, cela ne m'interesse pas. Autre solution, produire deux setup, un pour chaque plateforme. Les outils de télédistribution savent en général cibler des packages en fonction de variables comme l'OS, ce serait jouable. Mais cela ne me plaisait pas non plus.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Dernière solution, utiliser Wix. Cela ne m'enchantait pas trop car cela me semblait un peu "lourd". Mais comme on va l'intégrer à la prochaine version de VS, ce pouvait être l'occasion d'y jeter enfin un coup d'oeil.&amp;nbsp;Et c'était en fait un bel à priori : &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Je suis allé sur le site &lt;A href="http://wix.sourceforge.net/index.html" mce_href="http://wix.sourceforge.net/index.html"&gt;http://wix.sourceforge.net/index.html&lt;/A&gt;&amp;nbsp;récupérer le package (la V2).&lt;/LI&gt;
&lt;LI&gt;Je suis parti de l'exemple SampleFirst que j'ai&amp;nbsp;testé tel quel&lt;/LI&gt;
&lt;LI&gt;Puis je l'ai modifié pour référencer mon service, être par défaut en français (valeur 1036&amp;nbsp;pour les&amp;nbsp;tag Langages)&amp;nbsp;et cibler la plateforme x86 (tag Platforms='Intel' sur le noeud package).&lt;/LI&gt;
&lt;LI&gt;Et voila :)&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Pour référencer le service, j'ai ajouté le composant suivant :&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Component&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Id&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='MainService'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Guid&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='04C7E6DD-A2C6-40B6-9069-083DC4A4BD2F'&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;File&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Id&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='service1.exe'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='service1.exe'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;LongName&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='service1.exe'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;src&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='service1.exe'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;DiskId&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='1'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;ServiceInstall&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Id&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='service1.exe'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='Service1'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;DisplayName&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='Service1'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='ownProcess'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Interactive&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='no'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Start&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='auto'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Vital&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='yes'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;ErrorControl&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='normal'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;ServiceControl&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Id&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='service1.exe'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='Service1'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Start&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='install'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Stop&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='both'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Remove&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='uninstall'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Wait&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='yes'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Registry&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Id&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='Service1InstallDir'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Root&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='HKLM'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Key&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='Software\Company\Service1'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='InstallDir'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Action&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='write'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='string'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;Value&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;='[INSTALLDIR]'&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;Component&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&amp;nbsp;avec en bonus pour mon test l'écriture d'une clé de registre. Au final :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cela fonctionne bien sous XP 32 bits et Vista 64 bits.&lt;/LI&gt;
&lt;LI&gt;Plus de message d'alerte sur une dépendance à une version du Framework.&lt;/LI&gt;
&lt;LI&gt;Les custom actions ne servent plus à rien, le démarrage ou l'arrêt du service sont pris en charge par le msi généré par Wix.&lt;/LI&gt;
&lt;LI&gt;Et donc, lors d'une désinstallation,&amp;nbsp;plus de message d'alerte indiquant que certaines applications tournent encore et peuvent nécessiter un reboot.&lt;/LI&gt;
&lt;LI&gt;Les binaires et clés de registre vont bien au bon endroit (dans HKLM\Software ou HKLM\Software\Wow6432Node pour les clés de registres par exemple).&lt;/LI&gt;
&lt;LI&gt;En suivant le tutoriel et les exemples fournit sur le site de Wix, on a une solution qui marche en à peu près une heure. Ok, pour des tests complémentaires, des interfaces riches et ce genre de chose, c'est peut être plus couteux. Mais cela, ce ser pour une autre fois :)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;Bon, le besoin de déployer du .Net 1.1 sur plusieurs plate-formes ne doit pas être très courant mais si cela peut éviter quelques galères et heures perdues inutilement...&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6926940" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Vista/default.aspx">Vista</category></item><item><title>Applications 32 bits et registre 64 bits, quelques points à savoir avant de s'arracher les cheveux </title><link>http://blogs.msdn.com/pmanach/archive/2007/12/29/applications-32-bits-et-registre-64-bits-quelques-points-savoir-avant-de-s-arracher-les-cheveux.aspx</link><pubDate>Sat, 29 Dec 2007 13:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6895796</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/6895796.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=6895796</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;J’étais tranquillement en train de tester une application .Net 1.1 sur un Vista 64 bits quand je suis tombé sur un point bloquant : mon application ne pouvait lire des clés dans la base de registre, clés que j’avais créé à la main avec regedit. Plutôt surpris, j’ai relancé regedit et vérifié&amp;nbsp;: mes clés étaient bien là.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;Un petit test rapide du bout de code incriminé avec Visual Studio 2005&amp;nbsp;: le même code arrive bien à lire les clés. Après avoir éliminé assez rapidement les questions de sécurité et de droits, j’en suis venu à me demander si ce n’était pas un problème de plate-forme. J’ai alors forcé la compilation de mon bout de code en mode x86 sous VS2005, et là, bingo&amp;nbsp;: les clés n’étaient plus visible. Après quelques tests de confirmation (x86, x64, AnyCPU), cela s’est confirmé.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;Après quelques recherches, je suis tombé sur ce post très intéressant&amp;nbsp;: &lt;/FONT&gt;&lt;A href="http://207.46.236.188/MSDN/ShowPost.aspx?PostID=2428227&amp;amp;SiteID=1"&gt;&lt;FONT size=3&gt;http://207.46.236.188/MSDN/ShowPost.aspx?PostID=2428227&amp;amp;SiteID=1&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;En particulier&amp;nbsp;: &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;The rules are pretty straightforward:&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;.NET app compiled for "x86":&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;Always 32-bit&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;FONT size=3&gt;&lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;On 32-bit &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;platforms, accesses 32-bit registry&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;On 64-bit platforms, accesses 32-bit registry (inside Wow6432Node)&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level3 lfo1; tab-stops: list 108.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;64-bit registry inaccessible (without doing something weird)&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;.NET app compiled for "x64": &lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;Always 64 bit&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;On 32-bit platforms, won't run&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;On 64-bit platforms, accesses 64-bit registry (not inside Wow6432Node)&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level3 lfo1; tab-stops: list 108.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;If you want to get to the 32-bit registry, you need to do something weird&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;.NET app compiled for "AnyCpu"&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;Either 32 or 64 bit depending on platform&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;On 32-bit platforms, accesses 32-bit registry&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;On 64-bit platforms, accesses 64-bit registry (not inside Wow6432Node)&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 10pt; COLOR: black; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level3 lfo1; tab-stops: list 108.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;If you want to get to the 32-bit registry, you need to do something weird&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;"Something weird" technically requires passing a special flag to RegOpenKeyEx to obtain the alternate registry view.&amp;nbsp; .NET doesn't expose any function that will do this nicely, so you'd have to drop to p/invoke to get there.&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;EM&gt;Alternatively if you want to get to the 32-bit registry from a 64-bit/AnyCpu app, you can hardcode the "Wow6432Node" path in (since the 32 bit registry is visible from 64 bit, but not the reverse), but MS explicitly recommends against this.&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;En fait, l'utilisation de la fonction ReOpenKeyEx nécessite effectivement de faire du p/invoke en utilisant l'option KEY_WOW64_32KEY (0x200), voir &lt;A href="http://msdn2.microsoft.com/en-us/library/ms724878.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms724878.aspx&lt;/A&gt;. Et il faut repasser cette option à chaque ouverture de sous-clé, l'api repassant systématiquement en mode par défaut quelque soit le handle passé en paramètre.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;Le second cas marche aussi très bien en pratique, évite de faire appel à du p/invoke mais le fonctionnement n'est pas garanti à terme. L'idéal reste quand même d'avoir un setup qui cible la même plate-forme que l'application qu'elle installe (donc x86 si l'application a une dépendance à cette plate-forme, comme l'utilisation de SQL Ce 3.1) : les clés seront alors&amp;nbsp;automatiquement créées sous le noeud Wow6432Node et visibles par l'application comme étant directement sous HKLM\Software. Ce faisant, que l'application soient déployées sur un XP 32 bits, ou sur un Vista 32 ou 64 bits, il n'y a aucune "bidouille" à faire. Et lors des tests manuels, pendand le dev par exemple, il faut juste ne pas oublier de créer&amp;nbsp;les clés sous HKLM\Software\Wow6432Node sous peine de se poser beaucoup de questions :)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0.75pt; LINE-HEIGHT: normal"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: FR; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6895796" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Vista/default.aspx">Vista</category></item><item><title>Publication ClickOnce avec Vista</title><link>http://blogs.msdn.com/pmanach/archive/2006/12/06/publication-clickonce-avec-vista.aspx</link><pubDate>Tue, 05 Dec 2006 23:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1213570</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/1213570.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=1213570</wfw:commentRss><description>&lt;P&gt;Si vous cherchez à tester la fonction de publication de VS 2005 avec Vista, par d"faut, vous allez vous prendre des erreurs de sécurité et une erreur de librairie CAPICOM qui n'existe pas. Pour les erreurs de sécurité, il suffit de lancer VS en mode admin mais pour CAPICOM c'est un peu plus compliqué :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;installez le SDK Windows.&lt;/LI&gt;
&lt;LI&gt;Allez dans C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin.&lt;/LI&gt;
&lt;LI&gt;lancez regsvr32 capicom.dll&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Bon, ce n'était pas si compliqué que cela :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1213570" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Vista/default.aspx">Vista</category></item><item><title>Visual Studio US, Vista FR et les extensions pour .Net 3.0</title><link>http://blogs.msdn.com/pmanach/archive/2006/11/05/visual-studio-us-vista-fr-et-les-extensions-pour-net-3-0.aspx</link><pubDate>Sun, 05 Nov 2006 22:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:979695</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/979695.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=979695</wfw:commentRss><description>&lt;P&gt;Je sais que je cherche un peu les coups à vouloir faire fonctionner ensemble des logiciels beta dans des langues différentes mais pour l'instant, je m'en étais plutôt pas mal tiré. J'ai récement reconfiguré mon poste avec une version récente de Vista en français, j'ai installé Visual Studio en anglais et j'ai installé les extensions pour le Framework 3.0 (Cider, etc). Et là, la mauvaise surprise : en voulant créer un nouveau projet, je n'avais plus le choix que de créer un projet .Net 3.0 (WPF, WF, etc). Mais plus de projet librairie ou console. Hors, avant d'installer les extensions pour le Framework 3.0, j'avais eu l'occasion de constater que cela marchait.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;En creusant, je me suis rendu compte que les projets "classiques" étaient tous localisés (dans un répertoire dédié au code pays, ici le 1033) alors que les projets .Net 3.0 étaient dans des répertoires ne dépendant pas de la langue. J'ignore en quoi l'installation des extensions modifie le comportement standard de devenv mais le fait est qu'après, Studio ne permettaient plus que la création de projet non localisés (voir localisées en français mais je n'ai pas creusé).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;J'ai trouvé plusieurs solutions basées sur la recopie de fichiers dans des répertoires indépendant de la langue, dans un répertoire correspondant au français ou autre, mais la méthode la plus propre reste de lancer Visual Studio avec un paramètre permettant de fixer la langue : devenv.exe /LCID 1033&lt;/P&gt;
&lt;P&gt;Une fois le raccourci modifié, je peux de nouveau charger VS avec tous les projets standards et les projets spécifiques au Framework 3.0...&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=979695" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Vista/default.aspx">Vista</category></item><item><title>Support d’APS .Net 1.1 sous Vista</title><link>http://blogs.msdn.com/pmanach/archive/2006/06/05/617870.aspx</link><pubDate>Mon, 05 Jun 2006 13:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:617870</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/617870.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=617870</wfw:commentRss><description>&lt;p&gt;Question récurrente s’il en est…
&lt;/p&gt;&lt;p&gt;Je suis tombé sur cet article sur le site &lt;a href="http://www.asp.net"&gt;www.asp.net&lt;/a&gt; : &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=993"&gt;http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=993&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Ce nouveau site a l’air d’être une vrai mine d’or &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=617870" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Vista/default.aspx">Vista</category></item><item><title>Compilation de Workflow avec signature de l'assembly</title><link>http://blogs.msdn.com/pmanach/archive/2006/04/01/566458.aspx</link><pubDate>Sat, 01 Apr 2006 11:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:566458</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/566458.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=566458</wfw:commentRss><description>&lt;P&gt;Un besoin très courant, vous en conviendrez (au&amp;nbsp;moins pour me faire plaisir) :)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Le contexte&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Pour être plus précis, je travaille&amp;nbsp;en ce moment sur une application à destination de fonctionnels&amp;nbsp;qui doit leur permettre de mettre au point des processus métier avec un outil haut niveau. Et de les tester bien sûr...&lt;/P&gt;
&lt;P&gt;Je suis donc parti sur l'intégration du Wrokflow Designer dans une application Windows Form (Visual Studio étant un peu trop hardcore pour cette population). Et pour le versioning, je me suis dit : facile, on utilise l'attribut AssemblyVersion et pour bien faire, on signe le résultat.&lt;/P&gt;
&lt;P&gt;Et là, je me suis pris le mur pour faire cela coté code : j'ai seché lamenteblement avant de trouver une solution un peu compliquée mais que je trouve très interressante. Bien entendu, il y a beaucoup plus simple et je vais commencer par la seconde solution.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;La bonne solution&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Les développeurs de la&amp;nbsp;librairie CodeDom avaient du voir venir la question car ils avaient prévu une option fourre-tout au niveau de l'objet CompilerParameters : il dispose d'une propriété CompilerOptions de type string qui prend en fait tous les paramètres disponibles par la ligne de commande. Ici, on a au choix : /keyfile ou /keycontainer (merci à Aditya Bhandarkar pour l'information). Et voila...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;L'autre solution&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Oui, mais si on veut positionner d'autres éléments non disponibles par la ligne de commande ?&lt;/P&gt;
&lt;P&gt;C'est là tout l'intérêt de ma solution "un peu compliquée" :)&lt;/P&gt;
&lt;P&gt;Tout d'abord, je compile le Workflow en mémoire et conserve l'objet généré CompiledUnit :&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;WorkflowCompiler compiler = new WorkflowCompiler();&lt;BR&gt;WorkflowCompilerParameters parameters = new WorkflowCompilerParameters(assemblyNames);&lt;BR&gt;parameters.LibraryPaths.Add(Path.GetDirectoryName(typeof(ActivityLibrary.SimpleWebServiceActivity).Assembly.Location));&lt;BR&gt;parameters.OutputAssembly = string.Format("{0}.netmodule", this.WorkflowName);&lt;BR&gt;parameters.GenerateCodeCompileUnitOnly = true;&lt;BR&gt;_compilerResults = compiler.Compile(parameters, fileName);&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Puis je récupère l'objet voulu en mémoire et je le compile je modifie ses attributs:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;CodeCompileUnit ccu = _compilerResults.CompiledUnit;&lt;BR&gt;ccu.AssemblyCustomAttributes.Add(new CodeAttributeDeclaration("System.Reflection.AssemblyKeyFile", &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new CodeAttributeArgument (new CodePrimitiveExpression(@"c:\key.snk"))));&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Enfin, je compile le résultat :&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;string libPath = typeof(ActivityLibrary.SimpleWebServiceActivity).Assembly.Location;&lt;BR&gt;ICodeCompiler gen = provider.CreateCompiler();&lt;BR&gt;CompilerParameters cp = new CompilerParameters(new string[] { libPath,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\Program Files\Reference Assemblies\Microsoft\WinFX\v3.0\System.Workflow.Activities.dll",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\Program Files\Reference Assemblies\Microsoft\WinFX\v3.0\System.Workflow.ComponentModel.dll",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"C:\Program Files\Reference Assemblies\Microsoft\WinFX\v3.0\System.Workflow.Runtime.dll"});&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.GenerateExecutable = false;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.OutputAssembly = exeName;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.GenerateInMemory = false;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.TreatWarningsAsErrors = false;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#9acd32&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompilerResults _compilerResults2 = gen.CompileAssemblyFromDom(cp, ccu);&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;Et voila une jolie assembly correspondant à mes besoins :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;A noter que l'objet CompilerResults expose une propriété Output qui contient le résultat de l'affichage du compilateur en mode ligne de commande : très pratique pour trouver les erreurs voir les afficher...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=566458" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Workflow+Foundation/default.aspx">Workflow Foundation</category></item><item><title>Code snippets et C#</title><link>http://blogs.msdn.com/pmanach/archive/2006/03/22/557876.aspx</link><pubDate>Wed, 22 Mar 2006 15:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:557876</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/557876.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=557876</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face=Calibri&gt;De base, les snippets fournit avec VS en C# sont un peu pauvre en regard de ce qui est disponible en VB.. Vous pouvez mettre à jour la librairie en téléchargeant la mise à jour suivante&amp;nbsp;: &lt;/FONT&gt;&lt;A href="http://go.microsoft.com/fwlink/?linkid=57395&amp;amp;clcid=0x409"&gt;&lt;FONT face=Calibri&gt;http://go.microsoft.com/fwlink/?linkid=57395&amp;amp;clcid=0x409&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face=Calibri&gt;Une fois installée sur votre poste, lancez VS et dans le menu Tools, lancez le Code Snippet Manager. Si ce module manque dans le menu, vous pouvez toujours faire Ctr-K, Ctr-B. Puis ajoutez le répertoire racine de l’installation. &lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=557876" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Activation de VSS 2005 dans VS 2005</title><link>http://blogs.msdn.com/pmanach/archive/2005/10/28/486422.aspx</link><pubDate>Sat, 29 Oct 2005 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:486422</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/486422.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=486422</wfw:commentRss><description>&lt;P&gt;Je me suis un peu pris la tête sur une bétise ce soir : faire marcher VSS 2005 dans VS 2005. Ce qui n'aurait pas du causer le moindre souci :(&lt;/P&gt;
&lt;P&gt;En fait, j'ai installé comme d'habitude VS puis VSS. J'ai ensuite chargé mes projets dans VS pour les compiler et les intégrer à VSS. Et là, la panne : pas de menu contextuel sur la solution, rien dans le menu fichier, rien dans outils, l'angoisse en somme (surtout un vendredi soir).&lt;/P&gt;
&lt;P&gt;Deux solutions : coder sans contrôle de source ou résoudre le problème. La solution 1 étant inacceptable, j'ai donc cherché un peu et me suis rendu compte que par défaut, le pluggin VSS n'était pas activé dans les options de VS (alors que dans les versions précédentes, l'installation de VSS activait le pluggin par défaut).&lt;/P&gt;
&lt;P&gt;Il faut donc aller dans Tools, Options, Source Control, Plug-in selection et choisir Microsoft VisualSourceSafe. Et cela va beaucoup mieux après :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=486422" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/Team+System/default.aspx">Team System</category></item><item><title>Whidbey beta 2 et Yukon CTP</title><link>http://blogs.msdn.com/pmanach/archive/2005/05/05/415030.aspx</link><pubDate>Thu, 05 May 2005 14:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:415030</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/415030.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=415030</wfw:commentRss><description>&lt;P&gt;Un petit rappel pas inutile vu le nombre de problème rencontré : la CTP de Yukon doit être installée avec la beta 2 de Visual Studio. Sinon, prévoyez de l'aspirine :) &lt;/P&gt;
&lt;P&gt;Et faîtes l'installation sur une machine propre. Si vous avez déjà installé des versions précédentes, assurez vous de bien avoir tout désinstallé.&lt;/P&gt;
&lt;P&gt;Enfin, pour la beta 1 d'Avalon et de WinFX, le scénario d'installation à posteriori est normalement supporté, donc pas de sueurs froides dans un mois :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=415030" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/Avalon/default.aspx">Avalon</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/.Net/default.aspx">.Net</category></item></channel></rss>