{"id":503,"date":"2014-06-09T09:54:11","date_gmt":"2014-06-09T08:54:11","guid":{"rendered":"http:\/\/www.ree7.fr\/blog\/?p=503"},"modified":"2022-08-08T06:47:41","modified_gmt":"2022-08-08T05:47:41","slug":"csproj-platform-specific-reference","status":"publish","type":"post","link":"https:\/\/www.ree7.fr\/blog\/2014\/06\/csproj-platform-specific-reference\/","title":{"rendered":"Ajouter des r\u00e9f\u00e9rences binaires sp\u00e9cifiques \u00e0 une plateforme dans un csproj"},"content":{"rendered":"<p>Voici comment ajouter dans un projet une d\u00e9pendance (r\u00e9f\u00e9rence) sur une libraire compil\u00e9e d\u00e9pendante de la plateforme.<\/p>\n<p>En effet, lorsque l&rsquo;on travaille en interaction avec des librairies natives en particulier dans le cas des applications du Windows Store \/ Windows Phone Store, on va se retrouver avec deux versions du m\u00eame binaire \u00e0 inclure dans son projet, en fonction de l&rsquo;architecture du CPU qui va faire tourner l&rsquo;application :<\/p>\n<ul>\n<li>x86\n<ul>\n<li>Windows : Les PC\/Tablettes sous Windows 8.x (Surface Pro, &#8230;)<\/li>\n<li>Windows Phone : l&rsquo;\u00e9mulateur<\/li>\n<\/ul>\n<\/li>\n<li>ARM\n<ul>\n<li>Windows : Les tablettes sous Windows RT 8.x (Surface classique, &#8230;)<\/li>\n<li>Windows Phone : tous les smartphones du march\u00e9<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Visual Studio, via son menu <strong>Add Reference&#8230;<\/strong> ne permet pas de faire cette manipulation, il faudra pour cela modifier manuellement le fichier .csproj<\/p>\n<p>La variable concernant la plateforme dans les projets Windows Phone se nomme <strong>&lsquo;$(Platform)&rsquo;<\/strong> et vaut soit &lsquo;x86&rsquo; soit &lsquo;ARM&rsquo;.<\/p>\n<p>Ouvrez votre fichier .csproj et rep\u00e9rez l&rsquo;<strong>ItemGroup<\/strong>\u00a0o\u00f9 sont d\u00e9clar\u00e9es vos r\u00e9f\u00e9rences, voici un exemple :<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">&lt;ItemGroup&gt;\r\n  &lt;Reference Include=&quot;Newtonsoft.Json&quot;&gt;\r\n    &lt;HintPath&gt;..\\packages\\Newtonsoft.Json.6.0.3\\lib\\portable-net45+wp80+win8+wpa81\\Newtonsoft.Json.dll&lt;\/HintPath&gt;\r\n  &lt;\/Reference&gt;\r\n  &lt;Reference Include=&quot;System.Net.Http&quot;&gt;\r\n    &lt;HintPath&gt;..\\packages\\Microsoft.Net.Http.2.2.22\\lib\\sl4-windowsphone71\\System.Net.Http.dll&lt;\/HintPath&gt;\r\n  &lt;\/Reference&gt;\r\n  &lt;Reference Include=&quot;System.Net.Http.Extensions&quot;&gt;\r\n    &lt;HintPath&gt;..\\packages\\Microsoft.Net.Http.2.2.22\\lib\\sl4-windowsphone71\\System.Net.Http.Extensions.dll&lt;\/HintPath&gt;\r\n  &lt;\/Reference&gt;\r\n  &lt;Reference Include=&quot;System.Net.Http.Primitives&quot;&gt;\r\n    &lt;HintPath&gt;..\\packages\\Microsoft.Net.Http.2.2.22\\lib\\sl4-windowsphone71\\System.Net.Http.Primitives.dll&lt;\/HintPath&gt;\r\n  &lt;\/Reference&gt;\r\n&lt;\/ItemGroup&gt;<\/pre>\n<p>En dessous, ajoutez deux nouveaux ItemGroup conditionn\u00e9s par la plateforme courante et contentant les r\u00e9f\u00e9rences vers vos binaires sp\u00e9cifiques :<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">&lt;!-- Platform dependant libraries references --&gt;\r\n&lt;ItemGroup Condition=&quot; '$(Platform)' == 'ARM' &quot;&gt;\r\n  &lt;Reference Include=&quot;MyLibrary&quot;&gt;\r\n    &lt;HintPath&gt;..\\Libs\\ARM\\Release\\MyLibrary.dll&lt;\/HintPath&gt;\r\n  &lt;\/Reference&gt;\r\n&lt;\/ItemGroup&gt;\r\n&lt;ItemGroup Condition=&quot; '$(Platform)' == 'x86' &quot;&gt;\r\n  &lt;Reference Include=&quot;MyLibrary&quot;&gt;\r\n    &lt;HintPath&gt;..\\Libs\\x86\\Release\\MyLibrary.dll&lt;\/HintPath&gt;\r\n  &lt;\/Reference&gt;\r\n&lt;\/ItemGroup&gt;<\/pre>\n<p>Enregistrez le tout et r\u00e9ouvrez le projet dans Visual Studio, le tour est jou\u00e9 \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici comment ajouter dans un projet une d\u00e9pendance (r\u00e9f\u00e9rence) sur une libraire compil\u00e9e d\u00e9pendante de la plateforme. En effet, lorsque l&rsquo;on travaille en interaction avec des librairies natives en particulier dans le cas des applications du Windows Store \/ Windows Phone Store, on va se retrouver avec deux versions du m\u00eame binaire \u00e0 inclure dans [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[7],"tags":[17,80,3,52,78,20,82,81,79],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p19lzH-87","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts\/503"}],"collection":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/comments?post=503"}],"version-history":[{"count":1,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts\/503\/revisions"}],"predecessor-version":[{"id":582,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/posts\/503\/revisions\/582"}],"wp:attachment":[{"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/media?parent=503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/categories?post=503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ree7.fr\/blog\/wp-json\/wp\/v2\/tags?post=503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}