Domanda

Ho tre progetti in mia soluzione .net.
Il progetto principale e due progetti di libreria di classi.

ho scoperto che ho bisogno di riferimento incrociato i progetti libreria di classi.
Posso farlo? E 'sicuro o ci sono alcune considerazioni?

È stato utile?

Soluzione

L'IDE non ti consente di quando i progetti sono in una soluzione. Ci sono modi sottili per confuzzle esso. Ma poi la soluzione non può essere costruito da zero (cioè torso + Ricostruire) poiché il riferimento assembly non è ancora disponibile. Refactoring questo, probabilmente si desidera il montaggio di un terzo che entrambi possano fare riferimento.

Altri suggerimenti

riferimenti circolari sono possibile (tramite la riga di comando e alcuni trucchi, non tramite l'IDE), ma sono un grande dolore; non farlo!

In entrambi i aggiungere un più di montaggio per i tipi più comuni, o unire le due biblioteche.

In molti modi, meno è più semplice ... una miriade di dll non vuol dire che hai raggiunto la purezza -. È solo un pasticcio

Quando ho incontrato questo problema, ho classi create che hanno solo le proprietà. Potrebbe essere Employee, Customer, Product, qualsiasi cosa. Quelle classi non hanno bisogno di fare riferimento a qualsiasi altro progetto, in modo più progetti li possono fare riferimento.

I metodi che appartengono a quegli oggetti (Employee, Customer, Product) poi andare nelle loro classi in altri progetti.

Una situazione in cui ho incontrato questo molto spesso si trova in una a tre strati di applicazione - livello di presentazione, livello di business, e lo strato di accesso ai dati. Voglio che il DAL per recuperare i dati e compilare un oggetto Employee, che viene restituito al BLL. Se la classe Employee è nel BLL e ha entrambe le proprietà e metodi, quindi non v'è alcun modo semplice per popolare un oggetto Employee nel DAL e restituirlo al BLL - perché il BLL deve avere un riferimento al DAL, in modo che il DAL non può in riferimento turno BLL. Creazione del progetto separato con proprietà di sola classi (Employee, Customer, Product) è un modo per risolvere questo problema.

Se per "cross reference", vuol dire che si desidera effettuare le seguenti operazioni:

1) Progetto Principale contiene riferimenti a LIBRERIA-ALPHA e LIBRERIA-BETA

2) Progetto LIBRERIA-ALPHA contiene riferimenti a LIBRERIA-BETA

3) Progetto LIBRERIA-BETA contiene riferimenti a LIBRERIA-ALPHA

allora no. Visual Studio non sarà in grado di costruire Principale fino a quando non costruisce ALPHA e BETA . Sarà in grado di costruire ALPHA fino a quando non costruisce BETA . E sarà in grado di costruire BETA fino a quando non costruisce ALPHA . Pertanto, non sarà in grado di costruire qualsiasi cosa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top