2012-04-26 21 views
7

Ho un pacchetto (ad esempio, MyStuff.Data) che richiede EntityFramework (e altri) per funzionare, ma solo internamente. Non voglio che ogni progetto che utilizza MyStuff.Data faccia riferimento a EntityFramework (ea tutti gli altri), ma la DLL deve sempre essere presente.Nuget: specifica dipendenza senza riferimenti aggiunti

C'è un modo per aggiungere EntityFramework come dipendenza di MyStuff.Data (in modo che raccolga EntityFramework.dll nella cartella dei pacchetti), ma senza un riferimento aggiunto a ciascun progetto che lo consuma?

risposta

3

No, non c'è. Un'opzione potrebbe essere incorporare la dll EntityFramework e spedirla all'interno del proprio pacchetto e indicare esplicitamente quali riferimenti dovrebbero essere aggiunti nel progetto di destinazione durante l'installazione. Puoi specificarlo usando l'elemento metadati nel nuspec del tuo pacchetto. Maggiori informazioni possono essere trovate nella documentazione qui: http://docs.nuget.org/docs/reference/nuspec-reference#Specifying_Explicit_Assembly_References

Si noti che l'incorporamento di una specifica versione di una dipendenza è un vincolo che limita su tutti i vostri consumatori, il che significa che, in qualità di produttore pacchetto, sarà alla guida della versione di EF i tuoi consumatori possono e useranno ... che non è una buona situazione.

Preferibilmente, si tenta di astrarre qualsiasi dipendenza non controllata (EF) e lasciare la reale scelta di implementazione al consumatore (oppure fornisci un pacchetto separato contenente l'implementazione, in modo che i tuoi consumatori possano ancora opt-in e utilizzare i tuoi).

Problemi correlati