Assembly Resolver ignora PrivateBinPath

Ho un assembly che vorrei caricare da una sottocartella della base di applicazioni. Ho impostato la sottocartella in PrivateBinPath durante la creazione di AppDomain.

Il problema è che ho un’altra versione della stessa DLL nell’appbase. Dal modo in cui appare, il risolutore rileva prima la versione sbagliata, dice che c’è una mancata corrispondenza e si ferma. Di conseguenza, la versione corretta (situata nella sottocartella) non viene mai caricata.

Ho provato questo rimuovendo quelle DLL nell’appbase e ha risolto il problema. C’è un modo per forzare la ricerca anche se viene trovata la versione sbagliata?

È ansible utilizzare AppDomainSetup.PrivateBinPathProbe :

 AppDomainSetup.PrivateBinPathProbe = "x" 

Modifica: basta impostare questo valore su un valore diverso da null , vedere anche questa voce MSDN:

http://msdn.microsoft.com/en-us/library/system.appdomainsetup.privatebinpathprobe.aspx

Vuoi utilizzare solo PrivateBinPath ? Se è così, sembra che puoi impostare PrivateBinPathProbe su qualsiasi riferimento stringa non nullo:

Impostare questa proprietà su qualsiasi valore di stringa non nullo, incluso String.Empty (“”), per escludere il percorso della directory dell’applicazione, ovvero ApplicationBase, dal percorso di ricerca per l’applicazione e per cercare gli assembly solo in PrivateBinPath.

Ovviamente, ciò non aiuta se si desidera includere ApplicationBase , ma PrivateBinPath utilizzare PrivateBinPath .