Quizz Silverlight : Pourquoi VS 2008 ne stocke pas les DLL de Silverlight 1.1 dans /bin ?
Allez, on inaugure le premier d'une série de Quizz rapides sur Silverlight.
Y'a rien à gagner, si ce n'est de découvrir des aspects méconnus de Silverlight de façon ludique. Si vous n'avez pas la réponse, c'est a priori que vous pouvez apprendre un truc au sujet de Silverlight en lisant les commentaires : ils contiendront forcément la bonne réponse à un moment, et je vous la signalerai.
Premier Quizz sur Silverlight :
En Silverlight 1.1, le modèle de développement permet d'utiliser les langages managés de .NET tels que C#, contrairement à Silverlight 1.0 qui ne supporte que le script Javascript. Votre code en Silverlight 1.1 est compilé de façon tout à fait classique sous la forme d'une DLL - que vous pouvez d'ailleurs ouvrir avec l'outil Reflector.
Avec Visual Studio 2008 (nom de code Orcas), quand vous créez une application Web et que vous référencez un projet Silverlight 1.1 via "Add Silverlight link...", Orcas va copier le XAML représentant votre scène Silverlight dans votre nouveau projet Web, et il va aussi copier la ou les DLL dans un répertoire spécial, qui n'est pas le répertoire /bin classique dans lequel les assemblies ASP.NET sont déployées.
La question est double :
- Comment s'appelle le répertoire dans lequel Visual Studio 2008 va copier les DLL de votre application Silverlight ?
- Pourquoi ne copie-t-il pas tout simplement ces DLL dans le répertoire /bin ?
A vos claviers ;)
Hint: La réponse à la 1ère question figure dans le webcast de la session "Développement Web" du Mix07 à Paris, c'est Pierre qui en parle... et la réponse à la seconde est pratiquement évidente une fois que vous avez la première.
Comments
Anonymous
September 20, 2007
The comment has been removedAnonymous
September 20, 2007
Hmmm... tu veux dire dans le même dossier /bin que ASP.NET ? Je dirai que c'est parce que le code est exécuté sur le client via le mini runtime de Silverlight 1.1Anonymous
September 20, 2007
@Florian : Nice try, mais réponse incomplète. Comment s'appelle ce répertoire, et pourquoi est-il différent du /bin de ASP.NET ? Anybody ?Anonymous
September 20, 2007
Voilà un quizz sympa! Je vais faire comme Florian, avec d'autres détails. D'une part, le répertoire /bin contient les exécutables qui sont exécutés sur le serveur. Ne serait-ce que pour éviter les conflits, les DLLs Silverlight à exécuter sur le client doivent être dans un répertoire à part. D'autre part, le répertoire /bin est interdit à l'accès par le client (sécurité oblige). Comme les DLLs Silverlight client doivent être téléchargées par le client, elles doivent être dans un répertoire séparé, à l'accès autorisé. Ceci dit, la deuxième réponse n'est pas une vraie justification: on pourrait faire un .ashx qui exposerait une DLL du bin (mais encore une fois, niveau sécurité c'est pas top).Anonymous
September 20, 2007
@Arnaud Weil: Clair et limpide. You won. @Florian : Better luck next time. On est des experts, hein pas vrai ? Alors les réponses et les explications ne peuvent pas être approximatives. Je plaisante, bien sur :) See you!Anonymous
September 20, 2007
@Arnaud : Mais dis-moi, gredin, tu n'as pas donné la première réponse! Et je me suis laissé piéger... Comment s'appelle ce répertoire contenant les DLL de Silverlight 1.1 ?Anonymous
September 20, 2007
ClientBinAnonymous
September 27, 2007
Ah ben non, pas de première réponse. J'ai bien Visual Studio 2008 beta 2, mais je n'ai pas pris le temps d'installer les extensions pour Silverlight (j'ai déjà passé tellement de temps à installer celles pour ADO.NET Entity Framework, AJAX toolkit, Sharepoint et autres que j'ai des excuses). Et puis je trouve que ça serait trop facile de regarder la vidéo pour y trouver la réponse. :-)