Probleme de dll

nicotom Messages postés 20 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 4 février 2010 - 25 juil. 2005 à 09:44
invanoe Messages postés 1 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 15 février 2006 - 15 févr. 2006 à 21:37
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

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
25 juil. 2005 à 09:52
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.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
25 juil. 2005 à 10:15
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.
0
nicotom Messages postés 20 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 4 février 2010
25 juil. 2005 à 10:21
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
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
25 juil. 2005 à 10:28
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
25 juil. 2005 à 10:46
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.
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
25 juil. 2005 à 10:48
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.
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
25 juil. 2005 à 11:04
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.
0
nicotom Messages postés 20 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 4 février 2010
25 juil. 2005 à 11:47
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
25 juil. 2005 à 12:18
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.
0
nicotom Messages postés 20 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 4 février 2010
26 juil. 2005 à 09:16
Oui Lutinore
Grecréé la dll pour etre sur mais toujours rien !!
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
26 juil. 2005 à 09:21
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.
0
nicotom Messages postés 20 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 4 février 2010
26 juil. 2005 à 10:52
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
0
invanoe Messages postés 1 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 15 février 2006
15 févr. 2006 à 21:37
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.
0