Puoi usare la Reflection per recuperare le informazioni sui moduli DLL e caricare i moduli dinamicamente, quindi senza dover creare un riferimento diretto al progetto ma, ad esempio, solo per il semplice fatto che il file della DLL sia presente.
Poi, ovviamente, potrai decidere se caricare o meno la DLL all'interno della tua applicazione in base a tutte le condizioni che vuoi tu le quali, logicamente, devono essere verificabili nei confronti della DLL stessa.

Studiati bene la Reflection, perchè è molto potente.