Skip to main content

Le blog de Frédéric Buchet

Go Search
Home
  

 Sans Commentaires

Frédéric Buchet
Windows Form FAQ
Pour les développeurs d'application Windows, le site Windows Form FAQ de Georges Shepherd est un must au niveau des trucs et astuces concernant le framework .NET ! Vous y trouverez toutes les réponses à vos questions et principalement celle qui consistent à vous guider pour obtenir le comprtement désiré d'un contrôle windows. J'ai eu l'occasion d'exploiter pleinement la partie consacrée au datagrid et ce fut très instructif. En bref, un bon moyen de gagner du temps. Néanmoins, je recommende de toujours vérifier les informations fournies, on n'est jamais trop prudent...
Il existe également une version du site pour ASP .NET...
svchost.exe -- application error - La solution !!!
Voici la solution d'un problème qui m'a empoisonné la vie plusieurs jours et qui a failli me forcer à réinstaller mon portable.
Suite à une mise à jour via Windows Update, lors du reboot de la machine, le système terminait le déploiement des composants lorsqu'il s'est bloqué. Je fus donc obligé de pratiquer un hard reset et c'est la que les ennuis ont commencé ! A chaque démarrage du PC, durant l'initialisation de ma session, une boite de dialogue avec la mention : "svchost.exe -- application error the instruction at..." etc... est apparue. Si je laissais la boite de dialogue (une saleté de topmost windows) dans un coin, je pouvais travailler quasi normalement, mais si par malheur je cliquais sur OK, je déclenchais la paralysie de mon système avec hard reset obligatoire à la clé !
 
J'ai finis par trouver une solution, la seule dispo sur le web sur le blog de Scott Swigart.
 
En voici un résumé :
 
En laissant la boite de dialogue ouverte bien entendu...
 
1. Cliquer Start - > Run et taper "services.msc"
2. Double cliquer sur le service "Automatic Updates"
3. Cliquer sur l'onglet "Log On" et assurez vous que l'option "Local system account" est sélectionnée et l'option "Allow service to interact with desktop" est non sélectionnée.
4. Vérifier si le service a été activé dans les Hardware Profile listé, si non activé le.
5. Cliquer sur l'onglet "General" et assurez vous que le "startup type" est "Automatic". Ensuite cliquer le bouton "Start" sous "Service Status" pour démarrer le service.
6. Répéter les étapes précédentes avec le service "Background intelligent transfer service" (BITS).
 
Il faut maintenant réenregistrer les composants du Windows Update et effacer le répertoire temporaire corrompu du windows Update, voici les étapes :
 
1. Cliquer Start - > Run et taper REGSRV32 WUAPI.DLL
2. Cliquer OK à l'apparition du message "DllRegisterServer in WUAPI.DLL succeeded"
3. Répéter les étapes pour les commandes suivantes...
 
REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL
 
Maintenant comme le répertoire temporaire est probablement corrompu, nous allons le renommer, lorsque l'on redémarrera le service il recréera :
 
1. Cliquer Start - > Run et taper NET STOP WuAuServ (attention, un reboot sera peut-être nécessaire)
2. Cliquer Start - > Run et taper %windir%
3. Dans le répertoire ouvert, renommer le répertoire "SoftwareDistribution" en "SOld".
4. Cliquer Start - > Run et taper NET START WuAuServ
 
Et miracle, ca fonctionne... Pour moi en tous les cas et visiblement d'après les commentaires trouvé sur le net, je ne suis pas le seul !!!
Une solution de profiling vraiment sympa...
dotTrace 3.0 est un outil de profiling pas mal fichu... J'ai eu l'occasion de le constater lors de la recherche d'un problème de performance. Une interface intuive permet de déceler en quelques secondes le code qui s'exécute le plus lentement.
 
Il est en version d'éval pendant 10 jours, son prix reste néanmoins élevé avec une license par utilisateur de 499 €.
 
Essayez le quand même ;-)
 
Un raccourci clavier très sympa...
La navigation dans les codes sources n'est pas toujours facile. L'IDE de Visual Studio nous propose pas mal de possibilités pour accéder rapidemment à certaines zones du code. On connait tous les fameux flags qui nous permettent de  switcher aisément entre plusieurs zones de code.
Ou encore le clic droit sur une méthode et le "Go to definition" qui nous transporte à son implémentation. Mais voilà, lorsqu'on descend de plusieurs niveaux, il n'est pas toujours simple de remonter à la source, surtout si on a oublié de mettre un flag.
Essayez donc le CTRL + - (Contrôle Tiret)
Ce raccourci vous permet de remonter à la zone éditée précédente quelques soit le fichier ou la ligne ou vous vous trouviez...
Merci à Thomas Burette pour ce sympathique tuyau !
Quand on y goute, on ne sait plus s'en passer...
Comment déployer une assembly .NET sur un SQL Serveur 2005 (2)
Le déploiement d'une assembly .NET sur un SQL Serveur 2005 peux causer quelques soucis. Dans l'article précédent, on décrivait les deux techniques de déploiement. Bien entendu l'utilisation de Visual Studio masque les problèmes éventuels auquel on se retrouve directement confronté lorsqu'on effectue l'opération de manière manuelle !
Attardons nous donc sur ces quelques problèmes...
 
Dans une assembly, on va retrouver l'implémentation de procédures stockées et autres triggers. Lorsque je travaille avec Visual Studio, il est important que je marque mes méthodes par une série d'attributs que Visual Studio va interprêter à la compilation. Ces attributs permettent de lier les méthodes .NET aux triggers et procédures stockées.
Après la compilation, Visual Studio déploie l'assembly sur le serveur, mais lors de cette opération, il génère également les triggers et procédures stockées sur le serveur ainsi que leur liaisons avec l'assembly. Lorsque je déploie manuellement mon assembly, l'opération CREATE ASSEMBLY ne génère pas ces liens, on doit effectuer les liaisons manuellement comme ceci par exemple :
 
CREATE ASSEMBLY assemblyName FROM 'c:\....\assemblyName.dll'  -- ajout de la nouvelle assembly
 
CREATE TRIGGER MyTrigger
ON MyTable FOR INSERT, UPDATE, DELETE
AS EXTERNAL NAME AssemblyName.Triggers.TriggerFunctionName
 
Attention, lorsque l'on effectue une mise à jour d'une assembly et que l'on commence par faire un DROP de la version courante, celui-ci échoue si on ne supprime pas au préalable les liaisons.
 
DROP MyTrigger
 
 
 
Comment déployer une assembly .NET sur un SQL Serveur 2005
La première méthode et la plus simple consiste à créer et  à compiler avec Visual Studio 2005 votre projet SQL. En fournissant la chaine de connection, l'assembly générée à la compilation est automatiquement déployée sur le serveur. Cette méthode pose un problème lorsque l'on veut déployer l'assembly sur un autre serveur que celui utilisé pour le développement, surtout si vous n'avez pas d'accès à ce dernier depuis votre environnement de développement.
 
Le truc, l'astuce consiste alors à utiliser l'autre méthode ! La manuelle... Exécutez le script suivant sur le serveur SQL 2005 :
 
DROP ASSEMBLY assemblyName -- suppression de l'éventuelle version courante de l'assembly
CREATE ASSEMBLY assemblyName FROM 'c:\....\assemblyName.dll'  -- ajout de la nouvelle assembly
 
Le tour est joué, libre à vous d'intégrer le script dans un module d'installation.
 
Attention, n'oubliez pas de vérifier que vous avez les droits pour effectuer cette opération sur le serveur. N'oubliez pas également de vérifier que le serveur a activé les permissions pour utiliser des assembly .NET.

 Présentation

Vision Ezos s.a.

J'ai commencé ma carrière comme développeur au R&D à Ezos en 1998. Depuis j'ai eu l'occasion de toucher à de nombreux domaines, de la mobilité avec le développement d'applications sous Windows CE en passant par des projets Web ou Windows ou encore en participant à la création de framework et d'architectures applicatives. Je suis également formateur et possède quelques expériences de présentations lors de séminaires pour Microsoft.

Mes points forts sont une bonne maitrise de l'orienté objet, une excellente connaissance du C# et du VB .Net, mais également un passé de développeur C, C++. En outre mon parcours me confère une certaine polyvalence me facilitant le passage d'une technologie à une autre.

Marié et père de deux adorables bambins, mes passions sont outre l'informatique, le tennis et la course à pied !

MCP

 MCAD

View Frederic Buchet's profile on LinkedIn

 ‭(Hidden)‬ Admin Links