In generale, un eseguibile deve essere "instradato" alla ricerca delle DLL da cui dipende, copiando queste in una cartella inserita nel percorso di ricerca (PATH), che è una variabile di sistema, oppure nella cartella stessa del programma.

Nel caso del .NET Framework, le cose funzionano in modo differente, se non ricordo male.

Puoi configurare il meccanismo di "probing" di .NET per la ricerca di librerie, ma dubito che sia possibile fare riferimento ad una DLL che si trova in un percorso gerarchicamente superiore rispetto alla cartella in cui si trova l'eseguibile.