Probleme de dll

Signaler
Messages postés
20
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
4 février 2010
-
Messages postés
1
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
15 février 2006
-
Bonjour à tous

Je suis en train de réaliser un logiciel sous VS2003 qui comporte environ 25 classes.
Mon but est de remplacer ces classes par une dll.

J'ai donc compiler mon projet en "bibliotheque de classe" afin de créer la dll.
J'ai supprimer les classes de mon projet et ai ajouté la dll en référence.

Lors de la compilation tout se passe bien mais à l'execution, certain appels vers la dll plantes !!


WtfmCs.Messages.Initialisation(Langages.lEnglish);
// cet appel passe bien


WtfmCs.TypeModels.initialisation(); // cet appel plante

Les erreurs générées sont:
Une exception non gérée du type 'System.TypeLoadException' s'est produite dans WtfmCs.exe


Informations supplémentaires : Impossible de charger le type WtfmCs.CTypeModel à partir de l'assembly WtfmCs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.

ET

Une exception non gérée du type 'System.TypeInitializationException' s'est produite dans WtfmCs.exe


Informations supplémentaires : Une exception a été levée par l'initialiseur de type pour "WtfmCs.TypeModels".

Voila. En esperant que vos lumieres pourront m'aider

Merci
Nicotom

13 réponses

Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
1
Heu... Tu peux pas faire 2 projets dans la même solution. Ca t'évite de "perdre" les sources. Et ca facilite le debug.



Ensuite tu lances ta bibliothèque de classe en debug avec l'executable
pour charger la dll (option du projet dll je sais plus où).



Chris

N'oubliez pas de cloturer votre post.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, je pense qu'il manque une référence à la DLL qui contient le type WtfmCs.CTypeModel, ou alors ce type n'existe plus dans une autre DLL qui est appelée par la 1ère.
Messages postés
20
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
4 février 2010

En fait le CTypeModel est une des classes que j'ai intégré à la dll (aussi bien que Messages).

comment se fait il que certains appels passent et pas d'autres ?

Chris -> mon maitre de stage veut que les classes ne soit pas accessibles (par les étudiants) pour éviter les "boulettes".
Donc cette solution ne convient pas.

Lutinore -> comment ajouter une reference à une classe contenu dans la dll ?

Merci a vous
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
1
Tu peux avoir pour toi 2 projets dans une solution afin de faire des
tests (je crois pas que se soit interdit) et puis même SourceSafe gère
les droits d'accès. Un lecture seule sur une source ça marche aussi.
M'enfin, c'est mon avis et je suis pas ton maitre de stage (dommage ).

Tu peux regarde avec un viewer de classe (sur ta dll) pour savoir si
tes méthodes existes bien, si y a pas un problème de version.



Sinon, y peut pas y avoir une exception dans le code contenu dans la dll.



Chris

N'oubliez pas de cloturer votre post.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Comme le dit 69Chris, la première chose à faire c'est de regarder avec le visualiseur d'objets de VS ( double click sur la référence dans l'explorateur de projets) ou avec ildasm.exe ( dans le répertoire du SDK ou de VS ) si le type CTypeModel est bien dans la DLL.
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
Bonjour 69Chris ,
pour info : quand tu dis que :
"Sinon, y peut pas y avoir une exception dans le code contenu dans la dll."
Tu te trompes. Une DLL contient du code éxécutable qui peut planter comme tout bon code qui se respecte.

Nicotom > pour ajouter une ref a une classe a ton projet, il faut ajouter ue référence a la DLL dans ton projet, puis instancier les classes. On ajoute pas de ref a une classe mais a une DLL.
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
1
Désolé, j'ai oublié le "?" à la fin de la ligne (l'erreur est humaine,
pour preuve les progs qu'on fait en ont toujours). C'était plus une
question qu'autre chose. Dans une appli y a pas de bug, jusqu'au jour
où...



Sinon, pour l'ajout de la référence, c'est pas compliqué. Au niveau de
l'explo de solution, y a un "dossier" références, la dll "WtfmCs" doit
y être.



Chris



N'oubliez pas de cloturer votre post.
Messages postés
20
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
4 février 2010

Merci a vous mais pas de solution .

La dll est bien présente dans le dossier "refferences"

titeoe > l'instentiation est bien présente .....
J'ai également vérifié le contenu de la dll et CTypeModel est bien dedans. Tout comme Units qui ne fonctionne pas nonplus.

Nicotom
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Et à l'exécution es tu sûr d'utiliser la même DLL que celle référencée à la compilation ? Il y'en a pas peut être une dans la GAC et une dans le répertoire courant de l'application, ou bien ailleurs.
Messages postés
20
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
4 février 2010

Oui Lutinore
Grecréé la dll pour etre sur mais toujours rien !!
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
Moi ce que je te propose, c'est de mettre le projet de DLL dans ta solution VS et d'y aller en debug , en pas à pas pour voir pourquoi ca plantouille.

Tu la retirera apres, une fois que ton code sera nettoyé.

C'est la meilleure facon de procéder.
Messages postés
20
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
4 février 2010

J'ai réglé le probleme

J'ai créé un nouveau projet (vierge) et je lui ai donne les fenetres et la dll.

ET puis ca passait. ??
Bizarre ....

Sinon savez vous si il est possible de choisir quelle classe on veut mettre dans la dll.
Sans devoir changer les namespaces ?

Merci

Nicotom
Messages postés
1
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
15 février 2006

J'ai rencontré un problème similaire. J'ai renomé mon projet winform de Test en prjTest, et j'ai ajouté une bibliothèque appelé Test à ma solution.

Et a chaque compilation cela planté sérieusement. En fait, apparement quand on renome il ne met pas tout à jour.
J'ai donc modifié à la mano le fichier projet .csproj les 2 paramètres suivant qui ont gardé l'ancien nom Test au lieu prjTest.

AssemblyName
RootNamespace

une fois modifié, le projet est reparti.