happyleptic
Messages postés5Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention25 février 2011
-
10 août 2007 à 13:12
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 2014
-
10 août 2007 à 15:19
Bonjour,
Je suis un habitué du C++, je m'essaye à C# en .Net.
J'arrive à faire des trucs de base, je ne trouve pas ça plus pratique que du C++/win32, mais bon, c'est pas le problème. Y'a un énorme truc que je pige pas avec l'environnement visual studio, concernant la réutilisation de classes.
Je fais une solution avec deux projets. Le 1er est une classe d'accès aux données nommée DB, qui wrappe le bazar qu'ils ont pondu pour l'accès aux données en .Net. Le fait qu'ils refont tout avec Linq en dit long sur ce qu'ils pensent de ce merdier ... c'est pas le sujet.
Je veux réutiliser cette classe dans un projet à coté. Et là : impossible.
- Soit je fais "ajouter un source existant / add existing item" à mon projet, pour qu'il compile la classe DB dans la meme assembly que mon 2eme projet. Et cet abruti COPIE le fichier "DB.cs" au lieu de le référencer. j'hallucine complètement et je comprends pas pourquoi il fait une chose pareille.
- Soit ok, il faut déployer le package DB et le référencer dans mon 2eme projet. Je déploie mon assembly. Je vais dans les références et j'ajoute mon assembly DB. ça marche, je la vois, je vois le namespace "dom" et sa classe DB dedans. J'ajoute un "using DB;" dans mon 2eme projet pour l'utiliser. Et :
"The type or namespace name 'DB' could not be found (are you missing a using directive or an assembly reference?)"
J'ai tout essayé, il ne trouve pas la première classe en compilant. Alors que je l'ai mis dans les références. Alors qu'il le voie, qu'il l'ouvre, qu'il le connait, qu'il est dispo dans les assembly. J'ai essayé avec et sans namespace, d'importer "dom.DB", rien 'ny fait.
une idée, quelqu'un?
dom
A voir également:
La récupération de la fabrique de classes com pour le composant avec le clsid
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 10 août 2007 à 13:47
ADO.net, tu sais la couche d'accés aux données n'est pas un merdier comme tu sembles le penser mais plutot une branche complète du framework .net et qui permet en autre de gérer les dataset, dataadapter, dbconnection... je doute qu'ADODB soit aussi simple à utiliser ! bref...
concernant ton problème de référence : ce n'est pas la référence à l'assembly qu'il faut mettre, mais la référence au projet. ensuite, dans ton code ajoute : using dom;
et surtout... plutot que de raler après un produit, on essaye de le comprendre !
happyleptic
Messages postés5Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention25 février 2011 10 août 2007 à 14:34
J'essaye de comprendre, c'est pour ça que je pose des questions... Pour répondre à la tienne concernant ADO, en effet, c'est pas très léger, mais les MFC offraient une encapsulation très sympa.
J'ai essayé de mettre le nom du namespace au lieu du nom de l'assembly; ça me fait tout à fait la meme chose.
error CS0246: The type or namespace name 'dom' could not be found (are you missing a using directive or an assembly reference?)
Le nom que je vois dans les références, c'est bien DB (ça correspond au nom du .cs). Du coup, j'essaye toujours de comprendre...
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 10 août 2007 à 14:41
bon... on recommence :
soit une solution SLN et 2 projets A et B.
SLN
|- A
| |- Class1.cs
| |- Class2.cs
|- B
|- Class3.cs
pour utiliser des objets de A dans B, il faut que tu ajoutes la référence au projet A dans ton projet B.
Ensuite pour utiliser la class2 (de A) dans la class3 (de B) :
--> en haut de la classe Class3 : ajouté using A;
--> ensuite : Class2 class2 = new Class2();
happyleptic
Messages postés5Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention25 février 2011 10 août 2007 à 15:05
C'est bien ça, sauf que c'est encore plus simple, y'a une seule classe dans le projet à référencer
Solution SLN
|-Projet DB
| - namespace dom
| - class DB
|-Projet Subtabs
| - namespace subtabs
| - class Form1 : Form
- projet DB, compilé, deployé => sucess
- projet subtabs :
- dans les References, j'ai ajouté le projet DB
- dans Form1.cs, j'ai mis :
using DB; // using dom; c'est pareil
=> compilation :
error CS0246: The type or namespace name 'dom' could not be found (are you missing a using directive or an assembly reference?)
"using" s'applique à un namespace, oui? et le nom qu'il m'importe est un nom de projet (DB). ça a un rapport? De toutes façons ça ne marche avec aucun des deux. J'ai beaucoup de mal à trouver de l'information consistente à ce sujet...
oui, ça m'a l'air un peu d'être la base de la base; mais ça ne fonctionne pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
happyleptic
Messages postés5Date d'inscriptionmercredi 21 juin 2006StatutMembreDernière intervention25 février 2011 10 août 2007 à 15:18
Bon, j'ai re-créé un projet de zéro, avec un nom de projet différent du nom de classe; et ça marche tout droit.
Du coup ça marche et j'ai toujours pas compris ce qui s'est passé... juste de l'énergie et du temps perdu. Merci pour le support quand même...