Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Développer avec un serveur (ou un NAS) et éviter les erreurs de type “fichier provenant du web”

[new:31/08/2010]Si vos projets sont localisés sur un serveur ou NAS (ce qui est mon cas, un ReadyNAS NV+ avec 4x1To), il se peut bien que Visual Studio vous rendent fou en refusant de charger la moindre DLL provenant de ce serveur ! Pire : lorsque vous compilerez vos applications VS se plantera !

Il ne se plantera pas réellement, mais vous, vous le serez, planté !

En effet, durant le processus de compilation VS va placer des binaires intermédiaires dans le fameux répertoire “obj” qu’il va ensuite réutiliser pour construire l’exécutable final. Or, ce répertoire étant sur le serveur, VS vous retournera une erreur de compilation indiquant que le fichier provient du Web et qu’il n’est pas possible de s’en servir ! (un message du genre : Error 2 : Could not load the assembly Z:\XXX.DLL. This assembly may have been downloaded from the Web.  If an assembly has been downloaded from the Web, it is flagged by Windows as being a Web file…)

Gasp! Vous aurez beau pester et hurler à l’attention de VS que ces @$=#! de fichiers ne viennent pas d’Internet mais qu’ils sont sur votre serveur à vous, totalement “trusted”, là, sous vos yeux, le bel IDE restera de marbre…

Bien entendu toutes les combines que vous aurez trouvées pendant des heures de recherche sur le Web (comme ajouter le serveur dans les options Internet pour la zone locale), rien de tout cela ne marchera.

Là, comme moi, épuisé, à 7:51 du matin, mais pas parce que vous êtes levé tôt… vous vous dîtes “zut, ma config est pourrie, j’ai tout faux, je dois tout faire en local et faire des copies sur mon NAS”… Sauf que ça, c’est justement ce que vous avez voulu éviter en achetant un NAS (ou en installant un serveur) ! Vos Tera octets en X-Raid ne vous servent donc à rien :-(

Stop ! Avant de vous pendre avec le câble de votre NeufBox ou de balancer le NAS par la fenêtre, il existe une solution !

Il suffit de localiser le fichier de configuration de Visual Studio : “devenv.exe.config”. Sur ma machine Windows 7/64b il se trouve dans “C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE”.

Prenez le bloc-notes depuis le menu “démarrer”, mais halte là! Ne cliquez pas si vite… Clic-droit sur le bloc-notes puis “exécuter en mode administrateur”. Ok.

Maintenant ouvrez le fichier de configuration, et chercher la balise <runtime>, c’est une branche fille de <configuration>. Sous la balise <runtime> (ça ne sert à rien d’aller trop loin dans ce fichier), ajouter simplement la ligne suivante :

<loadFromRemoteSources enabled="true"/>

Sauvegardez le fichier (d’où l’importance d’avoir lancer le bloc-notes en mode administrateur).

Bien entendu vous avez fait tout ça après être sortie de toutes les instances de VS.

Vous pouvez le relancer et réessayer… Et oui, maintenant il compile correctement depuis un emplacement réseau sans se bloquer. C’est beau la vie non ?

Pas besoin de se pendre avec la câble de la NeufBox. Pas besoin de jeter le NAS ou le serveur aux horties. Non, vous n’avez pas fait une installation pourrie ni n’avez gaspillé votre argent. Tant de bonheur revenu grâce à une balise XML… et un peu grâce ce billet… :-)

Merci qui ?

alors Stay Tuned !

blog comments powered by Disqus