Domanda

Mantenere le cose semplici, assumere non sono DLL nella cartella locale o nei file di configurazione coinvolti o politiche di pubblicazione o risoluzione personalizzata. L'unico posto di DLL di riferimento è nel GAC.

In che modo la fusione decide quale versione delle DLL nel GAC da percorrere (tutte le altre cose uguali), qual è l'ordine della priorità?

Ad esempio Se nel mio progetto, ho fatto riferimento a una DLL della versione 10.5.0.0. Sceglierei la DLL della versione 10.5.0.0 o 10.5.1.0. In alternativa se avessi solo la versione 10.4.0.0 nel GAC, funzionerebbe o avrebbe lanciato un errore? Le questi regole cambiano a seconda se è la parte maggiore / minore / di costruzione / revisione che cambia?

In che modo questo differisce se il riferimento di progetto "versione specifica" è impostato su true o false?

E in che modo questo differisce se il riferimento è un riferimento DLL o riferimento di progetto?

Immagino che ci sia un sito Web MSDN da qualche parte affermando come funziona, ma non riesco a trovarlo. Non sto cercando di ignorare il comportamento, voglio solo sapere quale sia il comportamento predefinito.

È stato utile?

Soluzione

È documentato su MSDN in Come il runtime Trova assemblee . In particolare, il GAC viene cercato solo se il gruppo è caricato utilizzando un nome forte. Ci possono ancora essere politiche editor in atto che "reindirizza" ad un altro assemblaggio, ma non ci sono regole automatiche in posizione.

A mio parere il GAC è solo qualcosa che dovrebbe essere utilizzato da Microsoft per il .NET Framework e puoi rimuovere un sacco di dolore distribuendo la tua applicazione o la tua libreria senza utilizzare il GAC (tranne che .NET Framework ovviamente) .

Fare riferimento a una versione specifica di un assembly è una proprietà del tempo di costruzione e non influisce sul comportamento del tempo di esecuzione. Tuttavia, quando un riferimento di assemblaggio viene compilato in un eseguibile, la versione viene memorizzata nell'eseguibile e in fase di esecuzione è stata caricata una versione specifica (dopo aver applicato le regole di reindirizzamento del montaggio).

Pertanto per riassumere: in ordine .NET di caricare un'altra versione del gruppo richiesto, è necessario essere un reindirizzamento del montaggio in posizione. La tua applicazione può fornire reindirizzamenti nel file App.config e il GAC può avere politiche editor.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top