OVH Cloud OVH Cloud

compilation multi namespace

10 réponses
Avatar
Laurent
Bonjour,

Voilà mon soucy :
Je développe un big projet avec .Net avec une analyse objet N-Tiers (multi
couches), en plus je suis débutant en objet, mais j'apprends vite !!! enfin
je crois !!!
Bref, j'essaie de bien découper et regrouper mes classes dans des DLL
distinctes, mais j'ai le problème de reférence circulaire : la dll1 reference
la dll2 et la dll2 reference la dll1... forcément, ca plante.
Pour palier à ce problème, j'ai entendu dire qu'on pouvait tout développer
dans le meme projet, mais mettre ses classes dans des namespaces différents
et ensuite compiler une dll par namespace... Alors c'est ce que j'ai
commencé, mais maintenant j'arrive au point de compiler pour voir si ca
marche bien, mais je ne sais pas comment faire.

Est ce vraiment possible ???

Merci pour vos réponses

--
Laurent M.
Développeur .NET

10 réponses

Avatar
Alexandre Roba
Alexandre,

Si je comprend bien ta question, tu voudrais compiler des sous ensemble de
class (en fonction de leur namespace) appartenant a un meme projet dans
differentes assembly...

Je ne pense pas que ce soit faisable a partir de Visual Studio .NET (Il
devrait y avoir moyen en utilisant CSC directement mais ca serait
ingerable... :-)

Je pense que tu devrais revenir a ton idee initial et peut-etre mieux
structurer tes projects et et tes namespaces. Essai de te limiter a une seule
Solution (Tant que cela reste faisable bien sur.. :-)) et cree plusieurs
projet dans cette seule solution. Les class (tel que les interfaces,
exceptions, data transfer, utility, etc peuvent etre mises dans des projects
qui ne reference aucun de tes autres projects. Il est assez habituel de les
appaler xxx.xxx.Common.Exceptions ou encore xxx.xxx.Common.Utils...

Je suis persuader que tu auras plus facile a revenir en arriere qu'a essayer
de resoudre ton dernier probleme :-)

Bien à toi,

Alexandre Roba
.NET Architect
"Laurent" a écrit :

Bonjour,

Voilà mon soucy :
Je développe un big projet avec .Net avec une analyse objet N-Tiers (multi
couches), en plus je suis débutant en objet, mais j'apprends vite !!! enfin
je crois !!!
Bref, j'essaie de bien découper et regrouper mes classes dans des DLL
distinctes, mais j'ai le problème de reférence circulaire : la dll1 reference
la dll2 et la dll2 reference la dll1... forcément, ca plante.
Pour palier à ce problème, j'ai entendu dire qu'on pouvait tout développer
dans le meme projet, mais mettre ses classes dans des namespaces différents
et ensuite compiler une dll par namespace... Alors c'est ce que j'ai
commencé, mais maintenant j'arrive au point de compiler pour voir si ca
marche bien, mais je ne sais pas comment faire.

Est ce vraiment possible ???

Merci pour vos réponses

--
Laurent M.
Développeur .NET


Avatar
Laurent
Bonjour Alexandre,

J'abuse peut etre, mais je nage trop en ce moment...
La solution unique avec plusieurs projets, ca marche quand on est plusieurs
développeurs ??? Comment ? Je suis vraiment débutant ... ;-)
Aurais tu des sites ou des bouquins a referencer qui permettraient de
solutionner ce genre de questions ? on analyse en objet, on développe en c#
avec .NET2005.

Merci d'avance pour tes lumières ;-)

--
Laurent M.
Développeur .NET


"Alexandre Roba" a écrit :

Alexandre,

Si je comprend bien ta question, tu voudrais compiler des sous ensemble de
class (en fonction de leur namespace) appartenant a un meme projet dans
differentes assembly...

Je ne pense pas que ce soit faisable a partir de Visual Studio .NET (Il
devrait y avoir moyen en utilisant CSC directement mais ca serait
ingerable... :-)

Je pense que tu devrais revenir a ton idee initial et peut-etre mieux
structurer tes projects et et tes namespaces. Essai de te limiter a une seule
Solution (Tant que cela reste faisable bien sur.. :-)) et cree plusieurs
projet dans cette seule solution. Les class (tel que les interfaces,
exceptions, data transfer, utility, etc peuvent etre mises dans des projects
qui ne reference aucun de tes autres projects. Il est assez habituel de les
appaler xxx.xxx.Common.Exceptions ou encore xxx.xxx.Common.Utils...

Je suis persuader que tu auras plus facile a revenir en arriere qu'a essayer
de resoudre ton dernier probleme :-)

Bien à toi,

Alexandre Roba
.NET Architect
"Laurent" a écrit :

> Bonjour,
>
> Voilà mon soucy :
> Je développe un big projet avec .Net avec une analyse objet N-Tiers (multi
> couches), en plus je suis débutant en objet, mais j'apprends vite !!! enfin
> je crois !!!
> Bref, j'essaie de bien découper et regrouper mes classes dans des DLL
> distinctes, mais j'ai le problème de reférence circulaire : la dll1 reference
> la dll2 et la dll2 reference la dll1... forcément, ca plante.
> Pour palier à ce problème, j'ai entendu dire qu'on pouvait tout développer
> dans le meme projet, mais mettre ses classes dans des namespaces différents
> et ensuite compiler une dll par namespace... Alors c'est ce que j'ai
> commencé, mais maintenant j'arrive au point de compiler pour voir si ca
> marche bien, mais je ne sais pas comment faire.
>
> Est ce vraiment possible ???
>
> Merci pour vos réponses
>
> --
> Laurent M.
> Développeur .NET


Avatar
Alexandre Roba
Salut Laurent,

C'est avec grand plaisir, j'attend des informations donc j'ai un peu de
temps la. :-)

Oui tu peux utiliser une solution compose de plusieurs projets en
travaillant en equipe. C'est meme la manierre la plus simple... Plusieurs
solutions avec plusieurs projects (dont certain en commun) c'est plus
complique.

Je te conseille le super document Team Development Guide qui se trouve
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID”FDB8C8-5A87-4545-AF75-6053F32C7ECA
Ce document est en anglais mais concetre toi sur la partie
"Structuring Solutions and projects"

Il a ete ecrit pour VS.NET 2002/2003 mais je ne pense pas que beaucoup de
change doivent etre changer...

PS: Pour travailler en equipe il te faut de toute facon un outil de gestion
de configuration du style Microsoft SourceSafe, SourceGear Vault, CVS...

Amusez-vous bien.

Alexandre Roba




"Laurent" a écrit :

Bonjour Alexandre,

J'abuse peut etre, mais je nage trop en ce moment...
La solution unique avec plusieurs projets, ca marche quand on est plusieurs
développeurs ??? Comment ? Je suis vraiment débutant ... ;-)
Aurais tu des sites ou des bouquins a referencer qui permettraient de
solutionner ce genre de questions ? on analyse en objet, on développe en c#
avec .NET2005.

Merci d'avance pour tes lumières ;-)

--
Laurent M.
Développeur .NET


"Alexandre Roba" a écrit :

> Alexandre,
>
> Si je comprend bien ta question, tu voudrais compiler des sous ensemble de
> class (en fonction de leur namespace) appartenant a un meme projet dans
> differentes assembly...
>
> Je ne pense pas que ce soit faisable a partir de Visual Studio .NET (Il
> devrait y avoir moyen en utilisant CSC directement mais ca serait
> ingerable... :-)
>
> Je pense que tu devrais revenir a ton idee initial et peut-etre mieux
> structurer tes projects et et tes namespaces. Essai de te limiter a une seule
> Solution (Tant que cela reste faisable bien sur.. :-)) et cree plusieurs
> projet dans cette seule solution. Les class (tel que les interfaces,
> exceptions, data transfer, utility, etc peuvent etre mises dans des projects
> qui ne reference aucun de tes autres projects. Il est assez habituel de les
> appaler xxx.xxx.Common.Exceptions ou encore xxx.xxx.Common.Utils...
>
> Je suis persuader que tu auras plus facile a revenir en arriere qu'a essayer
> de resoudre ton dernier probleme :-)
>
> Bien à toi,
>
> Alexandre Roba
> .NET Architect
> "Laurent" a écrit :
>
> > Bonjour,
> >
> > Voilà mon soucy :
> > Je développe un big projet avec .Net avec une analyse objet N-Tiers (multi
> > couches), en plus je suis débutant en objet, mais j'apprends vite !!! enfin
> > je crois !!!
> > Bref, j'essaie de bien découper et regrouper mes classes dans des DLL
> > distinctes, mais j'ai le problème de reférence circulaire : la dll1 reference
> > la dll2 et la dll2 reference la dll1... forcément, ca plante.
> > Pour palier à ce problème, j'ai entendu dire qu'on pouvait tout développer
> > dans le meme projet, mais mettre ses classes dans des namespaces différents
> > et ensuite compiler une dll par namespace... Alors c'est ce que j'ai
> > commencé, mais maintenant j'arrive au point de compiler pour voir si ca
> > marche bien, mais je ne sais pas comment faire.
> >
> > Est ce vraiment possible ???
> >
> > Merci pour vos réponses
> >
> > --
> > Laurent M.
> > Développeur .NET


Avatar
laurent
C'est encore moi !

Tout d'abord merci pour le temps que vous m'allouez ainsi que les infos que
vous donnez ;-)

Juste une petite question encore pour un cas précis de référence circulaire
pour lequel je ne vois pas de solution... avant 3 mois !!! (pas bien)

Problème :
J'ai des "personne" (personne physique) et des "structures" (autres que des
personnes), nous sommes dans le milieu scolaire, donc en temps que personne
je vais avoir un élève, un professeur ... ; en temps que structure je vais
avoir un établissement, une classe, un service administratif...
J'ai donc identifié "personne" et "structure" comme étant deux projets
donnant chacun une dll. Ca se gate après :
Maintenant je dis que la structure doit avoir une référence sur la personne
car un service administratif est composé de personne, une classe a une
personne responsable... mais je dois aussi dire que personne doit avoir une
référence sur la structure, puisqu'un élève appartient à une classe ...
##@[]??§!:/ (grrrrrrr)

ET LA C'EST LE DRAAAAMMMMME !!!! :-(


"Laurent" a écrit :

Bonjour,

Voilà mon soucy :
Je développe un big projet avec .Net avec une analyse objet N-Tiers (multi
couches), en plus je suis débutant en objet, mais j'apprends vite !!! enfin
je crois !!!
Bref, j'essaie de bien découper et regrouper mes classes dans des DLL
distinctes, mais j'ai le problème de reférence circulaire : la dll1 reference
la dll2 et la dll2 reference la dll1... forcément, ca plante.
Pour palier à ce problème, j'ai entendu dire qu'on pouvait tout développer
dans le meme projet, mais mettre ses classes dans des namespaces différents
et ensuite compiler une dll par namespace... Alors c'est ce que j'ai
commencé, mais maintenant j'arrive au point de compiler pour voir si ca
marche bien, mais je ne sais pas comment faire.

Est ce vraiment possible ???

Merci pour vos réponses

--
Laurent M.
Développeur .NET


Avatar
fragmonster
J'ai l'impression que ton problème est plus lié à un problème de
conception UML. Je te recommande le livre suivant :

http://www.amazon.fr/exec/obidos/ASIN/2212116802/qid32585152/sr=8-3/ ref=pd_ka_2/402-1475532-1697766

"UML 2 par la pratique". Il y a un chapitre dédié au découpage et au
packaging (dépendance faible)
Avatar
Tsunoo Rhilty
à mon avis je definirai des classes virtuelles. Du genre

1)
virtual class personne
virtual class organisation
virtual class batiment

et les utiliserai dans des classes non virtuelles
Du genre

class maitre
{
}


2) Utilisation via Interface.
Avatar
Michael Moreno
Il est possible a l'aide de la ligne de commande de creer une assembly
faite de plusieurs fichiers. Mais l'interet de ce genre de technique
est assez limite au vu de la difficulte lors du codage/deploiement par
rapport aux benefices que cela apportent.

Une solution simple pour resoudre le probleme de reference circulaires
consiste a utiliser des interfaces ou des classes abstraites/virtuelles
dans une dll qui sera referencee par la dll qui contient toute la
logique pour les personnes et la dll qui contiendra toute la logique
pour les salles/batiments.

Mais cela veut dire au minimum 3 dll a maintenir et a deployer au lieu
d'une seule ! Faut voir si cela en vaut vraiment la peine et si cela
est beneficiaire pour ton projet. Si ton projet est vraiment enorme oui
(>2 Millions de ligne de code)... sinon pas sur !

--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
Avatar
Ambassadeur Kosh
prise de tête inutile.

si A "utilise" B et B "utilise" A, A et B sont dans le même Assembly,
basta...

maintenant, peut être que B "utilise" A est en fait non souhaité /
souhaitable
Avatar
Lloyd Dupont
bien resumer.

"Ambassadeur Kosh" wrote in message
news:
prise de tête inutile.

si A "utilise" B et B "utilise" A, A et B sont dans le même Assembly,
basta...

maintenant, peut être que B "utilise" A est en fait non souhaité /
souhaitable



Avatar
laurent
c'est bon les gars, j'ai vu le problème en live avec un analyste objet pur et
dur... ca marche mieux qu'un débutant comme moi ;-)

Merci pour votre aide en tout cas, ca m'a fait comprendre que j'avais tout
faux

"Alexandre Roba" a écrit :

Salut Laurent,

C'est avec grand plaisir, j'attend des informations donc j'ai un peu de
temps la. :-)

Oui tu peux utiliser une solution compose de plusieurs projets en
travaillant en equipe. C'est meme la manierre la plus simple... Plusieurs
solutions avec plusieurs projects (dont certain en commun) c'est plus
complique.

Je te conseille le super document Team Development Guide qui se trouve
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID”FDB8C8-5A87-4545-AF75-6053F32C7ECA
Ce document est en anglais mais concetre toi sur la partie
"Structuring Solutions and projects"

Il a ete ecrit pour VS.NET 2002/2003 mais je ne pense pas que beaucoup de
change doivent etre changer...

PS: Pour travailler en equipe il te faut de toute facon un outil de gestion
de configuration du style Microsoft SourceSafe, SourceGear Vault, CVS...

Amusez-vous bien.

Alexandre Roba




"Laurent" a écrit :

> Bonjour Alexandre,
>
> J'abuse peut etre, mais je nage trop en ce moment...
> La solution unique avec plusieurs projets, ca marche quand on est plusieurs
> développeurs ??? Comment ? Je suis vraiment débutant ... ;-)
> Aurais tu des sites ou des bouquins a referencer qui permettraient de
> solutionner ce genre de questions ? on analyse en objet, on développe en c#
> avec .NET2005.
>
> Merci d'avance pour tes lumières ;-)
>
> --
> Laurent M.
> Développeur .NET
>
>
> "Alexandre Roba" a écrit :
>
> > Alexandre,
> >
> > Si je comprend bien ta question, tu voudrais compiler des sous ensemble de
> > class (en fonction de leur namespace) appartenant a un meme projet dans
> > differentes assembly...
> >
> > Je ne pense pas que ce soit faisable a partir de Visual Studio .NET (Il
> > devrait y avoir moyen en utilisant CSC directement mais ca serait
> > ingerable... :-)
> >
> > Je pense que tu devrais revenir a ton idee initial et peut-etre mieux
> > structurer tes projects et et tes namespaces. Essai de te limiter a une seule
> > Solution (Tant que cela reste faisable bien sur.. :-)) et cree plusieurs
> > projet dans cette seule solution. Les class (tel que les interfaces,
> > exceptions, data transfer, utility, etc peuvent etre mises dans des projects
> > qui ne reference aucun de tes autres projects. Il est assez habituel de les
> > appaler xxx.xxx.Common.Exceptions ou encore xxx.xxx.Common.Utils...
> >
> > Je suis persuader que tu auras plus facile a revenir en arriere qu'a essayer
> > de resoudre ton dernier probleme :-)
> >
> > Bien à toi,
> >
> > Alexandre Roba
> > .NET Architect
> > "Laurent" a écrit :
> >
> > > Bonjour,
> > >
> > > Voilà mon soucy :
> > > Je développe un big projet avec .Net avec une analyse objet N-Tiers (multi
> > > couches), en plus je suis débutant en objet, mais j'apprends vite !!! enfin
> > > je crois !!!
> > > Bref, j'essaie de bien découper et regrouper mes classes dans des DLL
> > > distinctes, mais j'ai le problème de reférence circulaire : la dll1 reference
> > > la dll2 et la dll2 reference la dll1... forcément, ca plante.
> > > Pour palier à ce problème, j'ai entendu dire qu'on pouvait tout développer
> > > dans le meme projet, mais mettre ses classes dans des namespaces différents
> > > et ensuite compiler une dll par namespace... Alors c'est ce que j'ai
> > > commencé, mais maintenant j'arrive au point de compiler pour voir si ca
> > > marche bien, mais je ne sais pas comment faire.
> > >
> > > Est ce vraiment possible ???
> > >
> > > Merci pour vos réponses
> > >
> > > --
> > > Laurent M.
> > > Développeur .NET