146 messaggi dal 05 maggio 2005
Buongiorno a tutti!

Mi chiedevo se qualcuno i aiuta a capire come il runtime di .Net "rintraccia/seleziona" l'assembly da eseguire.

Ho creato una class library (Database) e definita come versione 1.0.0.0 Ho poi ho creato una seconda versione della stessa con il cambio firma di alcuni metodi e definita come versione 2.0.0.0

Entrambe sono state installate nella GAC con la stessa chiave di firma snk.

A questo punto creo una class library (Test) che referenzia la versione 1.0.0.0 di Database dalla GAC e poi creo una console application che referenzia invece la versione 2.0.0.0. di Database e che referenzia anche la nuova class library Test. Anche la console application istanzia una classe Database

Mi aspettavo che ogni assembly utilizzasse la versione a cui fa riferimento, invece mi rendo conto che viene sempre utilizzata la versione 2.0.0.0 anche dalla class library Test. E' normale questo comportamento? Sbaglio io? Ho modo di far utilizzare ad ogni assembly una specifica versione di un assembly nella GAC?

Spero di essermi spiegato.

Grazie a chi mi aiuterà a fare chiarezza.

Marco
497 messaggi dal 08 febbraio 2009
Ciao

Se ho capito bene, il tuo dubbio riguarda la versione di un assembly usato sia da una libreria che dalla tua applicazione.

Che sappia io, quando il .NET carica un assembly, ne usa uno per tutta l'applicazione (di solito la versione superiore).
Quindi è normale che usi la stessa versione di Database.

Puoi però decidere cosa fare tramite il file di configurazione (il .exe.config per capirci).

Qui dovrebbero darti qualche dritta in più: https://docs.microsoft.com/it-it/dotnet/framework/configure-apps/redirect-assembly-versions

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.