Ho lavorato per scrivere binding .NET per Rollbar , un servizio di segnalazione di errori e messaggi, come Airbrake. La mia libreria funziona bene e viene pubblicata nella galleria NuGet.
Quindi ora voglio portarlo al livello successivo di usabilità e implementare un NLog Estensione per questo. Ciò comporta la scrittura di una schermata di valore del codice e il riferimento alla libreria NLog. È un involucro. Potrei anche implementarne uno per Log4Net.
A questo punto è già diventato indistinto come dovrei organizzarlo e gestirlo con il controllo del codice sorgente e il nuget. Una cosa è certa che ci saranno pacchetti nuget separati in modo che le persone non debbano installare dipendenze che non vogliono.
Le mie domande sono:
-
Devo creare repository git separati per la libreria di base, l'estensione NLog e l'estensione Log4Net? Sembra che sarebbe più facile tenere traccia delle modifiche in processi di generazione chiaramente separati e simili. Potrebbe rendere più facile contribuire al / i progetto / i ... ma non ne sono sicuro.
-
Devo fare riferimento alla mia libreria di base Rollbar come dipendenza delle librerie di estensioni, o ILMerge? Il vantaggio di ILMerge è che l'utente ha bisogno solo di un riferimento e di una DLL. La parte dispari è con il controllo delle versioni. Mi piace come avere i numeri di versione che hanno senso quando è cambiata solo la libreria di base, oppure è cambiata solo l'estensione. Inoltre, sembra che nuget non elenchi gli aggiornamenti delle dipendenze dei pacchetti installati, solo per i pacchetti stessi. Vorrei che gli aggiornamenti alla libreria di base diventassero chiari come un aggiornamento che l'utente dovrebbe installare! Suppongo che un modo per farlo sia il bumping di versione dell'estensione e che impostano la versione della libreria delle dipendenze.
Questa è la mia prima incursione nello scrivere una libreria open source e pubblicarla e gestirla. Mi piacerebbe un po 'di feedback da parte di persone che si sono occupate di questo in modo da poterlo fare bene!
Sto usando Albacore per il mio processo di compilazione, per quello che vale.
(Codice corrente: link )