Sto creando una libreria C # open source ( link se è necessario). Come è di moda in questi giorni, ho intenzione di diffonderla tramite NuGet.
La mia libreria dipende da un'altra libreria (Castle.Core). Prima dei giorni NuGet, usavo uno strumento come ILMerge per unire la mia libreria e Castle.Core in un unico assembly, in modo che la distribuzione fosse più semplice. Ciò aumenta in modo significativo la dimensione del mio assembly (da 50kb a 450kb), ma è solo una singola DLL, utile per gli utenti.
Ora che c'è NuGet, tuttavia, posso semplicemente aggiungere Castle.Core come dipendenza e NuGet lo risolverà per i miei utenti. Questo ha alcuni vantaggi:
- È più semplice e meno incline agli errori per me
- Se i miei utenti utilizzano un'altra libreria che dipende da Castle.Core, risparmiamo spazio su disco
- In qualche modo sembra più "onesto" - tutto il duro lavoro è svolto da Castle.Core, tutto ciò che ho aggiunto è una bella API.
Ci sono anche alcuni svantaggi:
- Se Castle.Core viene rimosso in qualche modo da NuGet, la mia libreria smetterà di funzionare
- Se qualcuno vuole ancora utilizzare la mia libreria senza NuGet, è una seccatura maggiore perché è necessario copiare più DLL attorno
- Se uno sviluppatore esamina l'elenco dei riferimenti al progetto, vedrà alcuni strani riferimenti "Castle.Core" che non ricorda mai di aver aggiunto. Questo potrebbe confondere.
Che cosa faresti?