Ouarzy's Blog

Ouarzy's Blog

L'assembly 'System.Windows’

Le problème…

 

Petite astuce sur un problème qui m’a fait perdre beaucoup de temps quand je suis tombé dessus la première fois :

 

Impossible de charger le fichier ou l'assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' ou une de ses dépendances. Le fichier spécifié est introuvable.

 

 

Cette erreur survient notamment à l’exécution d’un site utilisant la dll "System.Windows" de Silverlight dans IIS, elle est due à un mauvais enregistrement de la dll en question dans le GAC.

 

Le plus frustrant quand on tombe la première fois sur cette erreur, c’est qu’elle ne se reproduit pas si on rafraîchi la page (car le site sera alors capable d’utiliser son cache pour accéder à la dll).

 

La solution est donc d’utiliser la commande gacutil pour enregistrer cette dll « à la main ».

 

 

Mais où se trouve gacutil ?

 

Gacutil.exe est fourni dans .NET 1 et 1.1 (seulement) et dans les SDK Windows. C'est un utilitaire qui permet d'enregister ou supprimer des dll du GAC (Global Assembly Cache) Windows.

On peut donc le trouver dans :

  • %programfiles%//Microsoft SDKs//Windows//v7.0A//Bin
  • %programfiles%//Microsoft SDKs//Windows//v6.0A//Bin
  • %windir%//Microsoft.NET//Framework//v1.0.3705
  • %windir%//Microsoft.NET//Framework//v1.1.4322

 

 

Mais où se trouve System.Windows ?

 

"System.Windows.dll" est une dll Silverlight, vous la trouverez donc dans votre dossier d’installation, c'est à dire quelque part par-là :

  • %programfiles%//Microsoft Silverlight//4.1.10111.0
  • %programfiles%//Microsoft Silverlight//5.0.61118.0

 

 

La solution!

 

Une fois que vous avez votre gacutil et votre dll dans un même dossier, il suffit alors de lancer une console et d’exécuter gacutil sur la dll en question.

 

Gacutil –i System.Windows.dll

 

 

Note:  en repassant dans un environnement WPF plus tard, j'ai noter des problèmes dans le chargement du XAML et de la Toolbox Microsoft. Ces problèmes sont directement liés au fait que cette dll soit enregistrée dans le GAC! Mais il est aussi simple de la supprimer du GAC grâce à la commande

 

Gacutil –u System.Windows.dll

 

En éspérant que cela évitera quelques prises de têtes...

 

 



17/04/2012
0 Poster un commentaire
Ces blogs de Informatique & Internet pourraient vous intéresser