<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Jean-Alain Baeyens (Jab) &#187; Sharepoint</title>
	<atom:link href="https://blog.developpez.com/jab/pcategory/sharepoint/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/jab</link>
	<description></description>
	<lastBuildDate>Wed, 04 Apr 2012 10:27:04 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>SharePoint 2007: Créer des interactions dans les écrans de saisie en utilisant des colonnes personnalisées</title>
		<link>https://blog.developpez.com/jab/p10914/sharepoint/creer_des_interactions_dans_les_ecrans_d</link>
		<comments>https://blog.developpez.com/jab/p10914/sharepoint/creer_des_interactions_dans_les_ecrans_d#comments</comments>
		<pubDate>Tue, 03 Apr 2012 15:50:50 +0000</pubDate>
		<dc:creator><![CDATA[jab]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vous êtes encore confronté à du SharePoint 2007 existant qui doit évoluer ou simplement vous n&#8217;avez pas migré vers SharePoint 2010. Si c&#8217;est le cas, ce blog peut vous être utile. Attention, la démarche décrite ci-dessous n&#8217;est pas portable vers SharePoint 2010. Il ne s’agit pas ici d’expliquer comment faire une colonne personnalisée mais uniquement de discuter des interactions entres champs dans les écrans de saisie SharePoint.. Le cas le plus typique et le plus [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous êtes encore confronté à du SharePoint 2007 existant qui doit évoluer ou simplement vous n&rsquo;avez pas migré vers SharePoint 2010. Si c&rsquo;est le cas, ce blog peut vous être utile. Attention, la démarche décrite ci-dessous n&rsquo;est pas portable vers SharePoint 2010.
</p>
<p>Il ne s’agit pas ici d’expliquer comment faire une colonne personnalisée  mais uniquement de discuter des interactions entres champs dans les écrans de saisie SharePoint..</p>
<p>Le cas le plus typique et le plus souvent demandé est la cascading dropdown. Il existe sur internet une solution gratuite  que nous avons-nous même utilisé jusqu’au jour où il m’a été demandé de lui ajouter des caractéristiques plus avancées (parents multiples, choix multiples)</p>
<p>J’avais alors le choix soit de partir de cette classe, soit de partir sur une nouvelle conception. Vous l’aurez compris, c’est cette deuxième solution que j’ai choisi. Pourquoi, d’une part il n’était pas aisé d’inclure les nouvelles caractéristiques dans le concept existant. D’autre part, je n’ai jamais aimé le principe d’avoir une colonne parent également personnalisée. Toutefois, pour partie, les deux solutions sont basées sur le même concept. L’idée de base est d’abonner le contrôle de la colonne personnnalisée  à un événement du contrôle de rendu d’une autre colonne, personnalisée ou non. Pour mon cas concret, je suis parti sur l’élément « SelectedIndexChange » mais le principe fonctionne sur n’importe quel événement. Evidemment l’événement choisi va déterminer les types de contrôles qui pourront être connectés.</p>
<p><span id="more-8"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private void subscriptToParentsEvent() <br />
{ <br />
&nbsp; &nbsp;string fieldNames = Field.GetCustomProperty(&quot;JoinFieldNames&quot;).ToString(); <br />
&nbsp;<br />
&nbsp; &nbsp;foreach (string fieldName in fieldNames.Split(';')) <br />
&nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; DropDownList control = getParentControl(fieldName); <br />
&nbsp; &nbsp; &nbsp; if (control != null) <br />
&nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;control.AutoPostBack = true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;control.SelectedIndexChanged += parentChanged; <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp;} <br />
}</div></div>
<p>Comme vous le voyez dans le code ci-dessus, il est nécessaire d’activer l’AutoPostBack pour permettre une interaction immédiate. L’élément intéressant dans ce code est l’appel à getParentControl. Cette méthode permet de retrouver un parent sur base du nom du champ et de son type de rendu. Dans mon cas, je cherche spécifiquement une dropdown.</p>
<p>Détaillons maintenant ce code:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private DropDownList getParentControl(string fieldName) <br />
{ <br />
&nbsp; &nbsp;Control parentField = findField(this.Page, fieldName); <br />
&nbsp; &nbsp;DropDownList parentControl = null; <br />
&nbsp; &nbsp;if (parentField != null) <br />
&nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; parentControl = findControl(parentField); <br />
&nbsp;<br />
&nbsp; &nbsp;} <br />
&nbsp; &nbsp;return parentControl; <br />
}</div></div>
<p>La recherche du control de rendu se fait en deux phases, la recherche du champ, ensuite la recherche du control proprement dit. Cette double recherche est nécessaire car aucun élément objectif ne permet de retrouver directement le contrôle au sein de la page. Par contre SharePoint génère non pas uniquement le contrôle de rendu mais toute une hiérarchie de contrôles pour effectuer le rendu des champs et un des niveaux identifie la colonne. La méthode « findField » recherche  ce niveau.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private Control findField(Control root, string fieldName) <br />
{ <br />
&nbsp; &nbsp; &nbsp;Control result = null; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp;if (root is BaseFieldControl) <br />
&nbsp; &nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (((BaseFieldControl)root).FieldName == fieldName) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = root; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp;else <br />
&nbsp; &nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;foreach (Control ctrl in root.Controls) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = findField(ctrl, fieldName); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (result != null) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; } <br />
&nbsp; &nbsp; return result; <br />
&nbsp;}</div></div>
<p>Il s’agit d’une méthode récursive qui va parcourir  l’arborescence à la recherche d’un élément qui hérite de « BaseFieldControl »  et dont le nom correspond à la colonne recherchée. Une fois cet élément trouvé, il devient alors possible de rechercher l’élément de rendu souhaité. N’oubliez pas que le rendu peut être assuré par plusieurs contrôles. La recherche ne peut donc se faire que sur le type.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private DropDownList findControl(Control root) <br />
{ <br />
&nbsp; &nbsp;DropDownList result = null; <br />
&nbsp;<br />
&nbsp; &nbsp;if (root is DropDownList) <br />
&nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; result = (DropDownList)root; <br />
&nbsp; &nbsp;} <br />
&nbsp; &nbsp;else <br />
&nbsp; &nbsp;{ <br />
&nbsp; &nbsp; &nbsp; foreach (Control ctrl in root.Controls) <br />
&nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = findControl(ctrl); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (result != null) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break; <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp;} <br />
&nbsp; &nbsp;return result; <br />
}</div></div>
<p>« findControl » fonctionne de manière identique à « findField ». La seule différence réside dans le type recherché. Il serait d’ailleurs possible de n’utiliser qu’une seule méthode qui prendrait le type en paramètre.</p>
<p>Maintenant, que vous êtes capable de vous connecter à n’importe quel événement de n’importe quelle colonne, il est possible de réaliser une colonne personnalisée capable de réaliser pratiquement n’importe quelle action dynamique telle que cascading drop down, validation dynamique complexe (la colonne personnalisée devenant un gestionnaire d’erreur), un provider pour lire des données externes en relation avec la valeur d’un champ,…</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>SharePoint: Dispose or not dispose</title>
		<link>https://blog.developpez.com/jab/p9997/sharepoint/sharepoint_dispose_or_not_dispose</link>
		<comments>https://blog.developpez.com/jab/p9997/sharepoint/sharepoint_dispose_or_not_dispose#comments</comments>
		<pubDate>Sat, 21 May 2011 13:57:41 +0000</pubDate>
		<dc:creator><![CDATA[jab]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les problèmes liés au code non managé qui entrainent des problèmes de fuites mémoires dans les développement SharePoint ont déjà fait l&#8217;objet de nombreux articles sur le web et je n&#8217;ajouterai rien de neuf mais il est parfois utile de revenir sur des sujets théoriquement connus. Tout les développeurs SharePoint même débutants connaissent l&#8217;obligation de faire un dispose après avoir instancié un objet de type SPSite ou SPWeb. ou la syntaxe plus commune Dans de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les problèmes liés au code non managé qui entrainent des problèmes de fuites mémoires dans les développement SharePoint ont déjà fait l&rsquo;objet de nombreux articles sur le web et je n&rsquo;ajouterai rien de neuf mais il est parfois utile de revenir sur des sujets théoriquement connus.</p>
<p><span id="more-7"></span></p>
<p>Tout les développeurs SharePoint même débutants connaissent l&rsquo;obligation de faire un dispose après avoir instancié un objet de type SPSite ou SPWeb.</p>
<p><img src="http://blog.developpez.com/media/dispose1.JPG" width="320" height="76" alt="" /></p>
<p>ou la syntaxe plus commune</p>
<p><img src="http://blog.developpez.com/media/dispose2.JPG" width="370" height="103" alt="" /> </p>
<p>Dans de nombreux cas, vous ne devrez pas instancier votre objet mais vous le récupérez dans le contexte.</p>
<p><img src="http://blog.developpez.com/media/dispose3.JPG" width="261" height="36" alt="" /></p>
<p>Dans ce cas, et fort logiquement, il <strong>ne faut pas</strong> faire de Dispose de l&rsquo;objet.</p>
<p><img src="http://blog.developpez.com/media/dispose4.JPG" width="258" height="69" alt="" /></p>
<p>Quand est-il si vous récupérez l&rsquo;objet depuis une collection de type SPWebCollection ? Par exemple la propriété Webs d&rsquo;un objet SPWeb ou AllWebs d&rsquo;un objet SPSite.</p>
<p><img src="http://blog.developpez.com/media/dispose5.JPG" width="313" height="38" alt="" /></p>
<p>Malgré le fait qu&rsquo;il s&rsquo;agisse d&rsquo;une référence, la référence porte vers une collection dont les membres ne sont instanciés qu&rsquo;à la demande. Ce qui est facile à comprendre si on imagine le nombre d&rsquo;objets de type SPWeb qui serait potentiellement nécessaire d&rsquo;instancier en même temps. Un dispose s&rsquo;impose donc.</p>
<p><img src="http://blog.developpez.com/media/dispose6.JPG" width="325" height="66" alt="" /></p>
<p>Ce qui est d&rsquo;autant plus valable pour un parcours d&rsquo;une collection</p>
<p><img src="http://blog.developpez.com/media/dispose7.JPG" width="277" height="99" alt="" /><br />
En espérant que ce petit résumé vous aura été utile.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comment assigner une propriété SharePoint depuis l&#8217;API de Word.</title>
		<link>https://blog.developpez.com/jab/p8803/sharepoint/setsharepointproperty</link>
		<comments>https://blog.developpez.com/jab/p8803/sharepoint/setsharepointproperty#comments</comments>
		<pubDate>Thu, 08 Apr 2010 09:51:31 +0000</pubDate>
		<dc:creator><![CDATA[jab]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Assigner une propriété SharePoint dans un projet VBA ou un addin VSTO est vraiment facile mais pas nécessairement bien documenté pour celui qui connait peu les classes de Word. Comme j&#8217;ai emprunté une mauvaise direction en me focalisant sur les Custom properties, j&#8217;ai cherché un long moment avant de trouver la bonne information. En fait, les objets de type &#171;&#160;Document&#160;&#187; contiennent une collection nommée ContentTypeProperties. Cette collection contient les propriétés SharePoint. En C#, le code [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Assigner une propriété SharePoint dans un projet <strong>VBA</strong> ou un addin <strong>VSTO</strong> est vraiment facile mais pas nécessairement bien documenté pour celui qui connait peu les classes de Word. Comme j&rsquo;ai emprunté une mauvaise direction en me focalisant sur les Custom properties, j&rsquo;ai cherché un long moment avant de trouver la bonne information.</p>
<p>En fait, les objets de type &laquo;&nbsp;Document&nbsp;&raquo; contiennent une collection nommée <strong><span style="color:blue">ContentTypeProperties</span></strong>. Cette collection contient les propriétés SharePoint.</p>
<p>En C#, le code pour assigner la propriété est alors:</p>
<p><em><span style="color:blue">MetaProperty</span> prop = doc.ContentTypeProperties.GetItemByInternalName(<span style="color:red">&laquo;&nbsp;myInternalFieldName&nbsp;&raquo;</span>);<br />
<span style="color:blue">if</span> (prop != null) prop.value = <span style="color:red">&laquo;&nbsp;new value&nbsp;&raquo;</span>;</em></p>
<p>Et c&rsquo;est tout.</p>
<p>doc est un objet de type Word Document .<br />
MetaProperty fait partie de Microsoft.Office.Core </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Content Control Word et propriétés SharePoint</title>
		<link>https://blog.developpez.com/jab/p8614/sharepoint/content_control_word_et_proprietes_share</link>
		<comments>https://blog.developpez.com/jab/p8614/sharepoint/content_control_word_et_proprietes_share#comments</comments>
		<pubDate>Wed, 10 Feb 2010 10:33:16 +0000</pubDate>
		<dc:creator><![CDATA[jab]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le problème exposé ci-dessous concerne des champs SharePoint définis par feature (xml definition). Connecter une propriété SharePoint avec un content control dans un document Word est simple à réaliser, il suffit juste d&#8217;ajouter la propriété depuis le menu champ de Quick Part. Dans certains scénari, le lien peut être brisé. Par exemple, si vous déplacez ou copiez le document d&#8217;un site vers un aute, le lien entre la colonne et le champ dans Word est [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le problème exposé ci-dessous concerne des champs SharePoint définis par feature (xml definition).</p>
<p>Connecter une propriété SharePoint avec un content control dans un document Word est simple à réaliser, il suffit juste d&rsquo;ajouter la propriété depuis le menu champ de Quick Part. Dans certains scénari, le lien peut être brisé.<br />
<span id="more-5"></span><br />
Par exemple, si vous déplacez ou copiez le document d&rsquo;un site vers un aute, le lien entre la colonne et le champ dans Word est généralement cassé. Dans ce cas, changer la valeur dans l&rsquo;info panel de Word ne change plus la valeur dans le document même. Pourquoi ?</p>
<p>En interne, dans un fichier xml de votre document (docx), vous pourez trouver une ligne similaire à l&rsquo;exemple ci-dessous.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;monNomDeChamp xmlns=&quot;58E7EE3F-EFF6-4043-A166-94AA3F93DB71&quot;&gt; <br />
&nbsp; &nbsp;La valeur <br />
&lt;/monNomDeChamp&gt;</div></div>
<p>L&rsquo;espace de nom defini est un guid qui référence un object spécific de SharePoint ou le document a été créé.</p>
<p>La solution pour résoudre ce problème est de choisir vous même un espace de nom. Pour ce faire, ajoutez la propriété SourceId dans la définition de votre colonne.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;&lt;Field <br />
&nbsp; &nbsp;Type=&quot;Text&quot; <br />
&nbsp; &nbsp;DisplayName=&quot;Document Office&quot; <br />
&nbsp; &nbsp;Group=&quot;Custom Document Properties&quot; <br />
&nbsp; &nbsp;ID=&quot;{126832c6-7b36-4cda-9046-0f0ff97c1c5d}&quot; <br />
&nbsp; &nbsp;SourceID=&quot;http://schemas.microsoft.com/sharepoint/v3&quot; <br />
&nbsp; &nbsp;StaticName=&quot;fdDocumentProvince&quot; <br />
&nbsp; &nbsp;Name=&quot;fdDocumentProvince&quot;&gt; <br />
&nbsp;<br />
&nbsp;<br />
Quand votre champ a été défini de cette manière, le document word contient <br />
&nbsp;<br />
&lt;code&gt; <br />
&lt;monNomDeChamp xmlns=http://schemas.microsoft.com/sharepoint/v3&gt; <br />
&nbsp; La valeur <br />
&lt;/monNomDeChamp&gt;</div></div>
<p>Maintenant, le document peut être déplaçé ou copié sans que le lien ne soit perdu.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Déboguer les dévelopements SharePoint depuis votre P.C. local.</title>
		<link>https://blog.developpez.com/jab/p7255/sharepoint/debuger_les_developements_sharepoint_dep</link>
		<comments>https://blog.developpez.com/jab/p7255/sharepoint/debuger_les_developements_sharepoint_dep#comments</comments>
		<pubDate>Thu, 19 Feb 2009 16:07:54 +0000</pubDate>
		<dc:creator><![CDATA[jab]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La première chose à faire est de copier sur le serveur les fichiers pdb avec les assemblies que vous souhaitez déboguer. Quand les assemblies sont dans la GAC, vous pouvez créer un disque virtuel pour mapper le répertoire de la GAC (c:\Windows\Assembly). Il est préférable de copier à la fois la dll et le pdb sinon vous risquez d&#8217;avoir un problème de concordance. Vous serez probablement amené à faire un IISReset avant cette copie pour [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La première chose à faire est de copier sur le serveur les fichiers pdb avec les assemblies que vous souhaitez déboguer. Quand les assemblies sont dans la GAC, vous pouvez créer un disque virtuel pour mapper le répertoire de la GAC (c:\Windows\Assembly). Il est préférable de copier à la fois la dll et le pdb sinon vous risquez d&rsquo;avoir un problème de concordance. Vous serez probablement amené à faire un IISReset avant cette copie pour libérer les assemblies. Malheureusement, il n&rsquo;est pas possible d&rsquo;utiliser les pdb sur votre machine locale mais en les chargeant manuellement depuis la fenêtre &laquo;&nbsp;module&nbsp;&raquo;.</p>
<p>subst g: c:\windows\assembly\gac_msil</p>
<p>Une fois les pdb copiés, vous devez, toujours sur le serveur, démarrer le “Visual Studio 2005 remote debugging monitor”.</p>
<p><img src="http://blog.developpez.com/media/spss4.jpg" width="336" height="112" alt="" /><br />
<span id="more-4"></span><br />
Dans l&rsquo;option “Tools” du menu, vous devez donner les permissions à l&rsquo;utilisateur que exécute Visual Studio sur la machine locale.</p>
<p><img src="http://blog.developpez.com/media/spss3.jpg" width="205" height="249" alt="" /></p>
<p>Pour retrouver le nom du serveur à utiliser dans Visual Studio, cliquez sur “Options”</p>
<p><img src="http://blog.developpez.com/media/spss2.jpg" width="231" height="168" alt="" /></p>
<p>Maintenant, vous pouvez aller dans Visual Studio sur votre machine locale.<br />
Ouvrez le fichier ou le projet que vous voulez déboguer.<br />
Cliquez sur “Attach to process”, utilisez le nom du serveur précédemment trouvé dans le champ &laquo;&nbsp;qualifier&nbsp;&raquo;.<br />
Attachez le processus w3wp.exe. Si vous avez plus d&rsquo;un processus, attachez les tous pour être sur d&rsquo;avoir le bon ou recherchez le pid de votre processus en utilisant la commande IISApp sur le serveur.</p>
<p><img src="http://blog.developpez.com/media/spss1.jpg" width="522" height="373" alt="" /></p>
<p>Maintenant, vous pouvez déboguer.</p>
<p>PS: Je tiens à remercier Wilke Jansoone pour les informations fournies.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
