<?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>Le blog de Hinault Romaric Donfack &#187; Visual Basic .NET</title>
	<atom:link href="https://blog.developpez.com/lilroma/pcategory/net/visual-basic-net/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/lilroma</link>
	<description>Bienvenue sur ce blog. Vous y trouverez du .NET, du .NET...  encore du .NET, toujours du .NET et très peu de chose sur moi</description>
	<lastBuildDate>Sat, 27 Aug 2016 14:24:30 +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>Microsoft.Web.Optimisation : ou comment optimiser une application ASP.NET en utilisant le regroupement et la minification à la volée du JavaScript et CSS</title>
		<link>https://blog.developpez.com/lilroma/p10462/net/microsoft_web_optimisation_ou_comment_op</link>
		<comments>https://blog.developpez.com/lilroma/p10462/net/microsoft_web_optimisation_ou_comment_op#comments</comments>
		<pubDate>Thu, 03 Nov 2011 16:55:00 +0000</pubDate>
		<dc:creator><![CDATA[Hinault Romaric]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET MVC 3]]></category>
		<category><![CDATA[ASP.NET MVC 4]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Nuget]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le temps de chargement d’une page est un facteur important dans l’évaluation des performances d’un site Web. Il a un impact non négligeable sur l’expérience utilisateur et même sur le référencement naturel. Plusieurs techniques peuvent être utilisées pour optimiser les &#8230; <a href="https://blog.developpez.com/lilroma/p10462/net/microsoft_web_optimisation_ou_comment_op">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Le temps de chargement d’une page est un facteur important dans l’évaluation des performances d’un site Web. Il a un impact non négligeable sur l’expérience utilisateur et même sur le référencement naturel.</p>
<p>Plusieurs techniques peuvent être utilisées  pour optimiser les performances d’une application Web (mise en cache, compression des fichiers, minification, etc). Je vais me pencher aujourd’hui sur le package NuGet d’optimisation d’un site Web « <strong><a href="http://nuget.org/List/Packages/Microsoft.Web.Optimization">ASP.NET Optimization – Bundling</a></strong> » qui a été publié récemment par Microsoft.</p>
<p>Ce package ajoute le support du regroupement et de la minification des fichiers JavaScript et CSS &#8211; qui sont des caractéristiques d’ASP.NET 4.5 et ASP.NET MVC 4 (disponibles actuellement en version Developper Preview) – avec le minimum d’effort pour les applications ASP.NET 4 et ASP.NET MVC.</p>
<p><img src="http://blog.developpez.com/media/minification.png" width="235" height="235" alt="" /></p>
<p><span id="more-37"></span></p>
<p>Le regroupement et la minification sont des procédés de réduction de la taille des fichiers en les combinant, et en supprimant les espaces et autres caractères  inutiles. Ces méthodes permettent de rendre l’exécution d’une page Web plus rapide avec le moins de demandes de chargement des fichiers. </p>
<p>Nous verrons dans ce billet de blog comment améliorer les performances d’une application Web ASP.NET MVC en utilisant les techniques de regroupement et de minification introduites par le package Microsoft.Web.Optimisation.</p>
<p>Pour commencer, nous allons créer un nouveau projet ASP.NET MVC 3.<br />
Comme l’illustre l’image ci-dessous, nous constatons que notre application contient par défaut un nombre déjà assez important de fichiers JavaScript et CSS.</p>
<p><img src="http://blog.developpez.com/media/capture1.PNG" width="497" height="339" alt="" /> </p>
<p>En exécutant une page de cette application (LogOn.chtml), nous obtenons les statistiques suivantes issues de l’analyse d’un outil de mesure de performance comme <a href="http://developer.yahoo.com/yslow/help/">YSlow</a>.</p>
<p><img src="http://blog.developpez.com/media/test1_01.PNG" width="640" height="196" alt="" /></p>
<p>Pour cette page,  nous avons un nombre total de 7 requêtes HTTP qui ont été effectuées, avec 4 fichiers JavaScript d’une taille totale de 119,9K qui ont été chargés.</p>
<p>Nous allons maintenant essayer de réduire le nombre de requêtes et la taille des fichiers qui sont chargés en utilisant ASP.NeT Optimisation Bundle.</p>
<p>Pour cela, nous allons  dans un premier temps ajouter une référence à Microsoft.Web.Optimisation dans notre application.</p>
<p>L’ajout de ce composant se fera via NuGet. Pour installer le package en utilisant NuGet voir <a href="http://rdonfack.developpez.com/tutoriels/dotnet/presentation-gestionnaire-packages-net-nuget/">mon article sur NuGet</a>.</p>
<p><img src="http://blog.developpez.com/media/nugetdwnload.PNG" width="620" height="107" alt="" /> </p>
<p>Après avoir installé le package, nous pouvons démarrer le regroupement et la minificatioon de nos fichiers en ajoutant tout simplement la ligne de code suivant dans la procédure Application_Start() du fichier Global.asax.cs.</p>
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border: solid 1px silver; cursor: text; margin: 20px 0px 10px 0px; max-height: 200px; overflow: auto; padding: 4px; width: 97.5%; direction: ltr; text-align: left;">
<pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;">BundleTable.Bundles.EnableDefaultBundles();</pre>
<p></div>
<p>Et c’est tout ;).</p>
<p>N’oubliez pas d’ajouter une référence à Microsoft.Web.Optimization dans le fichier Global.asax.cs :</p>
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border: solid 1px silver; cursor: text; margin: 20px 0px 10px 0px; max-height: 200px; overflow: auto; padding: 4px; width: 97.5%; direction: ltr; text-align: left;">
<pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"><span style="color: #0000ff;">using</span> Microsoft.Web.Optimization;</pre>
<p></div>
<p>Tous les fichiers JavaScript contenus dans le répertoire Scripts (les sous dossiers ne sont pas pris en compte) de notre application seront regroupés, compressés et traités comme un seul fichier.  Ces fichiers seront regroupés par défaut dans un dossier Script.</p>
<p>Ils seront désormais référencés en utilisant la ligne de code suivante :</p>
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border: solid 1px silver; cursor: text; margin: 20px 0px 10px 0px; max-height: 200px; overflow: auto; padding: 4px; width: 97.5%; direction: ltr; text-align: left;">
<pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script</span> <span style="color: #ff0000;">src</span><span style="color: #0000ff;">="@Url.Content("</span>/<span style="color: #ff0000;">Scripts</span>/<span style="color: #ff0000;">js</span><span style="color: #0000ff;">")"</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span></pre>
<p></div>
<p>De même, les fichiers CSS contenus dans le répertoire Content seront également compactés par défaut dans un dossier Content.</p>
<p>Ils seront référencés en utilisant la ligne de code suivante :</p>
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border: solid 1px silver; cursor: text; margin: 20px 0px 10px 0px; max-height: 200px; overflow: auto; padding: 4px; width: 97.5%; direction: ltr; text-align: left;">
<pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">link</span> <span style="color: #ff0000;">href</span><span style="color: #0000ff;">="@Url.Content("</span>/<span style="color: #ff0000;">Content</span>/<span style="color: #ff0000;">css</span><span style="color: #0000ff;">")"</span> <span style="color: #ff0000;">rel</span><span style="color: #0000ff;">="stylesheet"</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/css"</span> <span style="color: #0000ff;">/&gt;</span></pre>
<p></div>
<p>Après avoir appliqué ces modifications, exécutons à nouveau la page précédente. Nous obtenons le résultat suivant :</p>
<p><img src="http://blog.developpez.com/media/test3_01.PNG" width="640" height="233" alt="" /></p>
<p>En comparant avec le résultat précédent, nous constatons que le nombre de requêtes est passé de 7 à 4, avec l’utilisation d’un fichier JavaScript unique, contre quatre précédemment.<br />
C’est déjà une bonne chose. Par contre, on se rend compte que la taille du JavaScript a plutôt augmenté, passant de 119,9k à 437,5k.</p>
<p>Pourquoi avons-nous plutôt une augmentation de la taille du JavaScript ?</p>
<p>En utilisant le dossier Scripts par défaut, ce sont environ une vingtaine de fichiers JavaScript contenus dans notre application ASP.NET MVC qui sont regroupés, minifiés et référencés dans une page qui n’utilise que quatre de ces fichiers.<br />
C’est tout à fait normal donc que malgré l’opération d’optimisation, on se retrouve avec une taille totale de ces fichiers supérieure à celle des quatre référencés dans notre page.  </p>
<p>Pour pallier à cela, nous pouvons définir nos propres regroupements de fichiers.</p>
<p>Avec cette option, nous avons la liberté dans le choix des fichiers qui seront dans un regroupement, ainsi que l’URL qu’aura le regroupement. À ce stade, le choix des dossiers de regroupement doit être fonction de la récurrence des fichiers JavaScript et CSS dans les pages de votre application.</p>
<p>Nous pouvons définir nos regroupements personnalisés en procédant comme suit dans la procédure Application_Start() du fichier Global.asax.cs :</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 400px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">BundleTable.Bundles.EnableDefaultBundles();<br /><br />Bundle jsBundle = <span style="color: #0000ff">new</span> Bundle(<span style="color: #006080">&quot;~/Scripts&quot;</span>,<span style="color: #0000ff">typeof</span>(JsMinify));<br />jsBundle.AddFile(<span style="color: #006080">&quot;~/Scripts/jquery-1.5.1.min.js&quot;</span>);<br />jsBundle.AddFile(<span style="color: #006080">&quot;~/Scripts/modernizr-1.7.min.js&quot;</span>);<br />jsBundle.AddFile(<span style="color: #006080">&quot;~/Scripts/jquery.validate.min.js&quot;</span>);<br />jsBundle.AddFile(<span style="color: #006080">&quot;~/Scripts/jquery.validate.unobtrusive.min.js&quot;</span>);<br /><br />BundleTable.Bundles.Add(jsBundle);<br /><br />Bundle cssBundle = <span style="color: #0000ff">new</span> Bundle(<span style="color: #006080">&quot;~/Style&quot;</span>, <span style="color: #0000ff">typeof</span>(CssMinify));<br />cssBundle.AddFile(<span style="color: #006080">&quot;~/content/themes/site.css&quot;</span>);<br />cssBundle.AddFile(<span style="color: #006080">&quot;~/content/themes/base/jquery.ui.all.css&quot;</span>);<br /><br />BundleTable.Bundles.Add(cssBundle);<br /></pre>
<p></div>
<p>Nous allons désormais  référencer ces regroupements dans notre page comme suit :</p>
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border: solid 1px silver; cursor: text; margin: 20px 0px 10px 0px; max-height: 200px; overflow: auto; padding: 4px; width: 97.5%; direction: ltr; text-align: left;">
<pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;"><br /><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">link</span> <span style="color: #ff0000;">href</span><span style="color: #0000ff;">="@Url.Content("</span>~/<span style="color: #ff0000;">Style</span> <span style="color: #0000ff;">")"</span> <span style="color: #ff0000;">rel</span><span style="color: #0000ff;">="stylesheet"</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/css"</span> <span style="color: #0000ff;">/&gt;</span><br /><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script</span> <span style="color: #ff0000;">src</span><span style="color: #0000ff;">="@Url.Content("</span>~/<span style="color: #ff0000;">Scripts</span><span style="color: #0000ff;">")"</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><br /></pre>
<p></div>
<p>Et en exécutant la page précédente, nous obtenons le résultat suivant :</p>
<p><img src="http://blog.developpez.com/media/test2_01.PNG" width="640" height="223" alt="" /></p>
<p>Et voilà, la taille de nos fichiers JavaScript passe de 119,9K à 2,3K, soit une réduction de plus de 95 %.</p>
<p>Vous pouvez également ajouter à votre regroupement tous les fichiers JavaScript d’un répertoire en procédant comme suit :</p>
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border: solid 1px silver; cursor: text; margin: 20px 0px 10px 0px; max-height: 200px; overflow: auto; padding: 4px; width: 97.5%; direction: ltr; text-align: left;">
<pre id="codeSnippet" style="background-color: #f4f4f4; font-family: 'Courier New', Courier, Monospace; font-size: 8pt; line-height: 12pt; border-style: none; color: black; overflow: visible; padding: 0px; width: 100%; margin: 0em; direction: ltr; text-align: left;">jsBundle.AddDirectory(<span style="color: #006080;">"~/Scripts"</span>, <span style="color: #006080;">"*.js"</span>, <span style="color: #0000ff;">false</span>);</pre>
<p></div>
<p>Nous avons maintenant de quoi compresser et réduire au maximum le nombre de hits de nos pages Web avec souplesse. </p>
<p>Seul bémol, la minification des fichiers contenant du code CSS3 semble ne pas fonctionner pour l&rsquo;instant.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC 4 Developer Preview : amélioration du modèle de projet web avec le rendu adaptatif</title>
		<link>https://blog.developpez.com/lilroma/p10420/net/asp_net_mvc_4_developer_preview_ameliora</link>
		<comments>https://blog.developpez.com/lilroma/p10420/net/asp_net_mvc_4_developer_preview_ameliora#comments</comments>
		<pubDate>Thu, 20 Oct 2011 16:05:41 +0000</pubDate>
		<dc:creator><![CDATA[Hinault Romaric]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET MVC 4]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[J’avais dans un premier billet de blog, juste après la sortie de la Developer Preview d’ASP.NET MVC 4 présenté sommaire l’ensemble des fonctionnalités disponibles. Dans deux autres billets, je suis revenu de façon assez détaillée sur les nouveautés pour le &#8230; <a href="https://blog.developpez.com/lilroma/p10420/net/asp_net_mvc_4_developer_preview_ameliora">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>J’avais dans un premier billet de blog, juste après la sortie de la Developer Preview d’ASP.NET MVC 4 <a href="http://blog.developpez.com/lilroma/p10294/">présenté sommaire l’ensemble des fonctionnalités disponibles</a>. Dans deux autres billets, je suis revenu de façon assez détaillée sur <a href="http://blog.developpez.com/lilroma/p10343/">les nouveautés pour le support du mobile et des tablettes</a>. J’ai également décrit comment créer une première application Web mobile et comment y implémenter des vues multiples qui seront affichées automatiquement en fonction du type de navigateur (Desktop ou Mobile) qui accède la page.</p>
<p>Dans le même ordre d’idée, nous allons continuer à explorer les nouveautés du Framework Web avec cette fois, une analyse détaillée des améliorations apportées au modèle Web par défaut.</p>
<p><span id="more-65"></span></p>
<p>Pour cela, nous allons comme d’habitude lancer notre environnement Visual Studio, qui bien évidemment contient ASP.NET MVC 4 Developer Preview et procéder à la création d’un nouveau projet.</p>
<p>Dans la zone de sélection des modèles de projet, nous allons choisir le modèle Internet Application et valider ensuite sur OK.</p>
<p>Procédons à l’exécution de notre application (ctrl + f5) :</p>
<p><img src="http://blog.developpez.com/media/Templates.PNG" width="604" height="646" alt="" /></p>
<p>On peut s’apercevoir que le design du modèle par défaut auquel nous avons été habitués depuis la première version d’ASP.NET MVC jusqu&rsquo;à la version trois a été totalement remanié et est désormais beaucoup plus esthétique.</p>
<p><strong>Rendu adaptatif (Adaptive Rendering) avec CSS Media Query et Viewport</strong></p>
<p>La nouveauté la plus intéressante que je vais noter est cependant ce qui se cache derrière ce nouveau Template.  Pour illustrer cela, je vais exécuter un modèle de base d’ASP.NET MVC 3 et celui de MVC4 avec un  terminal mobile. Ici, je vais utiliser un émulateur d’Opera Mobile :</p>
<p><img src="http://blog.developpez.com/media/templates2.PNG" width="523" height="444" alt="" /></p>
<p>À première vue, on se rend compte que le texte de notre site sur MVC 3 est carrément illisible, tandis que le contenu de celui en MVC 4 a été adapté en fonction de la taille du terminal.</p>
<p>Ceci est possible grâce à l’implémentation d’une nouvelle fonctionnalité de rendu adaptatif, qui couple  le tag meta viewport et le CSS Media Queries.</p>
<p><strong>Tag meta viewport</strong></p>
<p>Pour un site Web classique de largeur par exemple 980px, le navigateur mobile va se charger de redimensionner le contenu proportionnellement. Du coup, à l’affichage, l’on peut se retrouver avec des caractères beaucoup trop petits, carrément illisibles, comme c’est le cas avec notre site sous ASP.NET MVC 3. </p>
<p>La balise meta viewport permet au navigateur de comprendre que l’affichage de notre page doit être adapté en fonction de la taille du terminal sur lequel est exécutée l’application. En spécifiant cette balise dans une page, au lieu de procéder à une réduction du texte, le navigateur redessine plutôt la page de telle sorte qu’elle soit parfaitement conforme aux dimensions de l’appareil.</p>
<p>La balise meta viewport est renseignée dans le fichier _layout de votre projet :</p>
<pre style='color:#000000;background:#ffffff;'><span style='color:#a65700; '>&lt;</span><span style='color:#800000; font-weight:bold; '>meta</span><span style='color:#274796; '> </span><span style='color:#074726; '>name</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"viewport"</span><span style='color:#274796; '> </span><span style='color:#074726; '>content</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"width=device-width"</span><span style='color:#a65700; '>></span>
</pre>
<p><strong>CSS Media Queries</strong></p>
<p>Nous avons grâce au meta viewport, spécifié à notre navigateur qu’il peut adapter le contenu de notre page en fonction de la taille du terminal. Cependant, celui-ci n’est pas assez futé pour définir automatiquement les règles d’affichages et les dispositions graphiques de votre page.</p>
<p>C’est à ce stade qu’interviennent les Media Queries. Cette fonctionnalité introduite par le CSS3 va permettre de définir des règles d’affichage personnalisées en fonction du type de média, de la taille de la fenêtre, de la résolution de l’écran, etc.</p>
<p>À titre d’exemple, avec le script suivant, l’affichage de ma page dans un navigateur ayant une taille supérieure à 850px sera en bleu, tandis que sur un navigateur ayant une taille max de 850px, elle aura un background noir.</p>
<pre style='color:#000000;background:#ffffff;'><span style='color:#800000; font-weight:bold; '>body</span> <span style='color:#800080; '>{</span><span style='color:#bb7977; font-weight:bold; '>background-color</span><span style='color:#808030; '>:</span><span style='color:#797997; '>blue</span><span style='color:#800080; '>;</span>
      <span style='color:#bb7977; font-weight:bold; '>color</span><span style='color:#808030; '>:</span><span style='color:#797997; '>black</span><span style='color:#800080; '>;</span><span style='color:#800080; '>}</span>
<span style='color:#800080; '>@</span><span style='color:#004a43; '>media</span> <span style='color:#004a43; '>only screen and (max-width: 850px) </span><span style='color:#800080; '>{</span>
    <span style='color:#800000; font-weight:bold; '>body</span> <span style='color:#800080; '>{</span><span style='color:#bb7977; font-weight:bold; '>background-color</span><span style='color:#808030; '>:</span><span style='color:#797997; '>black</span><span style='color:#800080; '>;</span>
          <span style='color:#bb7977; font-weight:bold; '>color</span> <span style='color:#808030; '>:</span><span style='color:#797997; '>white</span> <span style='color:#800080; '>;</span><span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span>
</pre>
<p>En effet, lors du chargement de la page, le navigateur applique plutôt le code CSS contenu dans le bloc @media si la résolution de l’écran est inférieure ou égale à celle définie par l’attribut  max-width.</p>
<p>Vous trouverez les règles d’affichage personnalisées pour le modèle de projet par défaut  d’ASP.NET MVC4 dans le fichier Site.css, dans le bloc de code @media only screen and (max-width: 850px).</p>
<p><strong>Utilisation de jQuery UI</strong></p>
<p>Une autre amélioration qui a été apportée au modèle est l’utilisation du JavaScript pour fournir une interface utilisateur plus riche. Les pages connexion et inscription utilisent désormais  jQuery UI pour afficher à l’écran une page beaucoup ergonomique :</p>
<p><img src="http://blog.developpez.com/media/templates3.PNG" width="294" height="405" alt="" /></p>
<p><strong>Conclusion</strong> </p>
<p>Il est intéressant de constater que des règles CSS ont été définies dans le Template Web par défaut pour prendre en charge les tailles d’écrans différents. Mais, je tiens à signaler que ce modèle n’est pas adapté pour la navigation sur les écrans tactiles. Par exemple, vous pouvez remarquer qu’il n’utilise pas la bibliothèque jQuerie Mobile.</p>
<p>À mon humble avis, se serait bien que soit introduit un autre template dans ASP.NET MVC 4 qui couple le modèle mobile et le modèle Web pour fournir une application optimisée à la fois pour les terminaux mobiles et les navigateurs Desktop.</p>
<p>En tout cas peut-être d’ici à la publication de la version finale, ce sera le cas ;). </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer et gérer un package Nuget dans plusieurs projets simultanément</title>
		<link>https://blog.developpez.com/lilroma/p10317/net/installer_et_gerer_un_package_nuget_dans</link>
		<comments>https://blog.developpez.com/lilroma/p10317/net/installer_et_gerer_un_package_nuget_dans#comments</comments>
		<pubDate>Mon, 26 Sep 2011 18:05:01 +0000</pubDate>
		<dc:creator><![CDATA[Hinault Romaric]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Nuget]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans mes deux précédents billets de blog, j’avais évoqué comment créer et publier son propre package Nuget en utilisant l’outil Nuget.exe en invite de commandes et, comment utiliser le confort de l’interface graphique de Nuget Explorer pour parvenir au même &#8230; <a href="https://blog.developpez.com/lilroma/p10317/net/installer_et_gerer_un_package_nuget_dans">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Dans mes deux précédents billets de blog, j’avais évoqué comment créer et publier son propre package Nuget en utilisant <a href="http://blog.developpez.com/lilroma/p10314/net/nuget/title-203/">l’outil Nuget.exe en invite de commandes</a> et, comment utiliser <a href="http://blog.developpez.com/lilroma/p10316/net/nuget/creer-et-publier-son-propre-package-nuge/">le confort de l’interface graphique de Nuget Explorer pour parvenir au même résultat</a>.</p>
<p>Aujourd’hui je vais me pencher sur l’utilisation même de Nuget au sein de Visual Studio 2010 pour  installer et gérer des  packages.</p>
<p>Dans ce billet de blog, nous allons découvrir une nouveauté/astuce qui avait été introduite par la dernière version de Nuget, permettant d’installer et maintenir simultanément dans plusieurs projets un package.</p>
<p><span id="more-71"></span></p>
<p>Pour l’exemple, nous devons  disposer comme pré requis Visual Studio 2010 et le gestionnaire de package Nuget.</p>
<p>Lançons votre EDI,  créons une nouvelle solution et ajoutons-y deux projets comme l’illustre l’image ci-dessous :</p>
<p><img src="http://blog.developpez.com/media/addpackage.PNG" width="368" height="105" alt="" /></p>
<p>Nous allons ajouter un package à la fois dans notre application MVC et notre application Windows Forms en une seule opération.</p>
<p>Pour cela,  nous devons faire un clic droit sur notre solution, dans le menu contextuel qui va s’afficher, nous allons cliquer sur « Manage Nuget Packge ».</p>
<p>Dans la fenêtre de gestion des packages Nuget, nous allons essayer d’installer Entity Framework  dans nos deux projets en cliquant sur le bouton « Install ».</p>
<p><img src="http://blog.developpez.com/media/Managepackage.PNG" width="790" height="443" alt="" /></p>
<p>Une seconde fenêtre va s’afficher, nous demandant de sélectionner les projets de notre solution dans lesquels nous souhaitons que Nuget installe le package.</p>
<p><img src="http://blog.developpez.com/media/SelectProjets.PNG" width="398" height="296" alt="" /> </p>
<p>Par défaut, tous les projets de la solution sont cochés.</p>
<p>Nous allons cliquer enfin sur le bouton OK pour lancer l’installation.</p>
<p>Nous nous rendrons compte que Nuget a téléchargé le package et ajouté automatiquement une référence à celui-ci dans les deux projets de notre solution.</p>
<p><img src="http://blog.developpez.com/media/VSExplorer.PNG" width="369" height="362" alt="" /> </p>
<p>Et voilà, c’est tout plutôt facile ;).</p>
<p>Dans la fenêtre de gestion de packages Nuget, grâce au bouton « Manage » désormais affiché sur le package que nous venons d’installer, nous pouvons à tout moment désinstaller le package dans un projet, ou ajouter le package dans un nouveau projet que nous avons ajouté à notre solution.</p>
<p>Pour effectuer une installation directement dans un projet uniquement d’une solution, au lieu de faire un clic droit sur la Solution, faites-le plutôt sur le dossier « References » du projet, et cliquez sur Manage Nuget Packages. </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment importé une feuille Excel vers un DatagridView</title>
		<link>https://blog.developpez.com/lilroma/p8171/net/comment_importer_une_feuille_excel_vers</link>
		<comments>https://blog.developpez.com/lilroma/p8171/net/comment_importer_une_feuille_excel_vers#comments</comments>
		<pubDate>Thu, 08 Oct 2009 15:16:50 +0000</pubDate>
		<dc:creator><![CDATA[Hinault Romaric]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Suite à de multitudes recherches sur comment importé un classeur Excel en VB.net ou en C#, et à des multiples questions posées à cet effet sur le forum vb.net ou C#. Je me permets de vous présenté dans ce billet &#8230; <a href="https://blog.developpez.com/lilroma/p8171/net/comment_importer_une_feuille_excel_vers">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>  Suite à de multitudes recherches sur comment importé un classeur Excel en VB.net ou en C#, et à des multiples questions posées à cet effet sur le forum vb.net ou C#. Je me permets de vous présenté dans ce billet de blog une méthode simple et efficace pour importé un classeur Excel vers un DataGridView en VB.net ou C#.<br />
 Dans cet exemple nous utiliserons la technologie ADO.met qui permet d&rsquo;exécuter des requêtes SQL sur Excel, ainsi grâce à une requête SQL nous pourrons définir les données a sélectionné suivant la feuille, la colonne, la ligne ou la cellule.<br />
 Cet exemple suppose que vous avez votre formulaire avec un DataGridView nommé DataGridView1</p>
<p><strong><em>- Exemple VB.net</em> </strong></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">'déclaration du dataset <br />
&nbsp;Dim dat As DataSet <br />
&nbsp;dat = New DataSet <br />
&nbsp; &nbsp;'déclaration et utilisation d'un OLeDBConnection <br />
&nbsp;Using Conn As OleDbConnection = New OleDbConnection(&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ExcelFile.xls;Extended Properties=&quot;&quot;Excel 8.0;HDR=Yes;IMEX=1&quot;&quot;&quot;) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ' Conn.Open() <br />
&nbsp; &nbsp; &nbsp; &nbsp;'déclaration du DataAdapter <br />
&nbsp; &nbsp; &nbsp; &nbsp;'notre requête sélectionne toute les cellule de la Feuil1 <br />
&nbsp; &nbsp; &nbsp; &nbsp;Using Adap As OleDbDataAdapter = New OleDbDataAdapter(&quot;select * from [Feuil1$]&quot;, Conn) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Chargement du Dataset <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Adap.Fill(dat) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'On Binde les données sur le DGV <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DataGridView1.DataSource = dat.Tables(0) <br />
&nbsp;End Using <br />
&nbsp; 'le end using libère les ressources <br />
&nbsp; &nbsp; &nbsp; &nbsp; End Using</div></div>
<p>&#8211; <strong> <em>Exemple C#</em></strong></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; &nbsp;//déclaration du dataset <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DataSet Dat; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Dat = new DataSet(); <br />
&nbsp; &nbsp;//déclaration d'un OLeDBConnection <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OleDbConnection conn = new OleDbConnection(/*&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\ExcelFile.xls;Extended Properties=&quot;&quot;Excel 8.0;HDR=Yes;IMEX=1&quot;&quot;&quot;*/); <br />
&nbsp; &nbsp; &nbsp; &nbsp; //déclaration du DataAdapter <br />
&nbsp; &nbsp; &nbsp; &nbsp;//notre requête sélectionne toute les cellule de la Feuil1 <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OleDbDataAdapter Adap = new OleDbDataAdapter(&quot;select * from [Feuil1$]&quot;, conn); &nbsp;<br />
&nbsp; &nbsp; &nbsp; //Chargement du Dataset <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Adap.Fill(Dat); <br />
&nbsp; &nbsp; &nbsp;//On Binde les données sur le DGV <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DataGridView1.DataSource = Dat.Tables[0] ;</div></div>
<p>Bonne programmation à tous et à bientôt pour d&rsquo;autres astuces <img src="https://blog.developpez.com/lilroma/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Utilisation du controle SourceGrid</title>
		<link>https://blog.developpez.com/lilroma/p7863/net/utilisation_du_controle_sourcegrid</link>
		<comments>https://blog.developpez.com/lilroma/p7863/net/utilisation_du_controle_sourcegrid#comments</comments>
		<pubDate>Thu, 09 Jul 2009 16:36:18 +0000</pubDate>
		<dc:creator><![CDATA[Hinault Romaric]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Visual Basic .NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Salut sa fait déjà un moment que j&#8217;utilise le composant open source Soucegrid déjà d&#8217;emblée ce contrôle entièrement écrite en C# avec du code générer, est très puissant et rapide(malgré qu&#8217;elle soit un peu complexe a utiliser surtout pour les &#8230; <a href="https://blog.developpez.com/lilroma/p7863/net/utilisation_du_controle_sourcegrid">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p> Salut sa fait déjà un moment que j&rsquo;utilise le composant open source <a href="http://www.devage.com/sourcegrid/SourceGrid_EN.html"> Soucegrid </a> déjà d&rsquo;emblée ce contrôle entièrement écrite en C# avec du code générer, est très puissant et rapide(malgré qu&rsquo;elle soit un peu complexe a utiliser surtout pour les développeurs VB.net).<br />
 La plus par des astuces sur ce composant étant en C# ainsi que l&rsquo;aide dans le site de Devage je me suis chargé donc de vous donner quelque astuces en VB.net pour l&rsquo;utilisation de ce composant que je préféré largement au DataGridView.<br />
&#8211; Formatage des données<br />
  la classe Sourcegrid.cells donne accès aux méthodes permettant le formatage des cellules il est a noté que chaque cellule est base sur le modèle MVC.<br />
 exemple<br />
  pour avoir comme cellule un bouton<br />
<code class="codecolorer text default"><span class="text">&nbsp; Grid1(0, 1) = New SourceGrid.Cells.Button(&quot;Cliquer Ici&quot;)</span></code><br />
 pour avoir un chekbox<br />
<code class="codecolorer text default"><span class="text">Grid1(0, 1) = New SourceGrid.Cells.CheckBox</span></code></p>
<p>&#8211; Cacher une ligne de la grille<br />
<code class="codecolorer text default"><span class="text">&nbsp;Grid.Rows(i).Visible = False</span></code></p>
<p>&#8211; Récupérer le numéro de la ligne sur laquelle l&rsquo;on a cliquer<br />
<code class="codecolorer text default"><span class="text">dim Row as integer = Grid11.MouseCellPosition.Row</span></code></p>
<p>   On s&rsquo;arrête la pour l&rsquo;instant en espérant que sa va aider plusieurs personne, bonne programmation a tous et si vous avez un soucis vous me contacter en postant juste dans le forum VB.net.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
