Se ha lo stesso numero di versione della DLL di riferimento, viene utilizzato GAC.
Se si incrementa il numero di versione, ricostruire il sito Web facendo riferimento al nuovo numero di versione, inserire la nuova versione nella directory/bin, quindi verrà utilizzata quella DLL.
Se non si desidera modificare il numero di versione, si è praticamente sfortunati.
Quando .NET carica assemblee con nome forte, tenta innanzitutto di decidere quale numero di versione utilizzare. Lo fa prima tramite il riferimento, quindi cerca publisher policies, quindi cerca binding redirects nel file di configurazione.
Dopo aver eseguito questa operazione, cerca l'assembly nella GAC, quindi in qualsiasi codebase specified, quindi esegue la scansione di varie cartelle del file system per la DLL. Se in una di queste fasi trova l'assembly versione corretto, si ferma.
Se non si modifica il numero di versione dell'assembly con nome sicuro, .NET troverà quello originale nel GAC e smetterà di cercare. Si noti che poiché si arresta quando ne trova uno, e poiché la ricerca nel GAC è la prima, specificare una base di codice per l'assembly non andrà bene a meno che non si specifichi anche un nuovo numero di versione.
fonte
2009-06-11 14:16:19
Ho capito bene? Se la versione 1.0.0.0 si trova nel GAC ma compilo con la versione 1.0.0.1 e inserisco 1.0.0.1 nel mio BIN, GAC viene ignorato e viene utilizzato BIN.Se rimuovo il file .dll dal mio BIN, verrà utilizzato 1.0.0.0 nel GAC anche se ho compilato 1.0.0.1? –
No. Se si compila un assembly con nome sicuro, sarà necessario il numero esatto della versione, a meno che non siano disponibili criteri di pubblicazione o reindirizzamenti di binding. –
I criteri del publisher e i reindirizzamenti del binding consentono il reindirizzamento della versione #, quindi se il programma è compilato su 1.0.0.0 e vi è un reindirizzamento del binding o un criterio del publisher che specifica 1.0.0.1, questa diventa la versione che cerca. –