29 messaggi dal 24 marzo 2008
Buongiorno Ragazzi,
vi scrivo per chiedervi informazioni in merito alle modalità con cui generalmente opero quando si tratta di aggiornare un'applicazione ASP.NET.

Premetto che preferisco lavorare in modalità compilata aggiornabile, in modo da poter effettuare rettifiche al markup delle pagine senza dover ricompilare le dll per il codebehind.

In quest'ultimo caso, non compilando con nomi di assembly fissi, sostituisco sempre tutti i file nella cartella bin.

Mi sono trovato recentemente a dover gestire un'applicazione non sviluppata da me che invece utilizzava assembly a nome fisso. In questo caso, dopo la compilazione, ho pensato di rinominare la vecchia dll in "__nome.dll" e copiare la nuova "nome.dll"

Mi sono trovato ad avere un errore "Could not load assembly..." che ho inizialmente imputato al mancato riavvio del sito web IIS per far si che venissero recepite le modifiche. Ma anche dopo il riavvio il problema è rimasto.

Alla fine ho fatto un backup della vecchia dll in un'altra cartella ed ho lasciato solo la nuova; in questo modo l'applicazione ha ripreso a funzionare correttamente.

Probabilmente si tratta di una banalità ma volevo chiedervi se riscontrate qualche errore nella procedura che vi ho illustrato oppure se è necessario comunque sostituire le dll vecchie con le nuove.

Grazie a tutti in anticipo per qualsiasi suggerimento ed informazione :)

Nulla è reale...tutto è lecito...
5.610 messaggi dal 09 febbraio 2002
Contributi
Ciao,
rinominare l'assembly non è una condizione sufficiente per escluderlo dal progetto poiché il CLR, mediante probing, va curiosando in varie posizioni, come ad esempio nella cartella /bin, per trovare gli assembly .dll che compongono l'applicazione e quelli che essa referenzia.

L'assembly __nome.dll, dato che è dentro /bin, viene quindi trovato e il CLR tenta di caricarlo. Il caricamento tuttavia non va a buon fine (e ti produce l'eccezione che hai visto), perché il nome del file non corrisponde al nome presente nel manifesto dell'assembly (nome che si imposta dalle proprietà del progetto, prima della compilazione). Infatti nella pagina di errore, da qualche parte dovresti leggere questo:
WRN: Comparing the assembly name resulted in the mismatch: NAME
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.


Hai fatto bene a portar via l'assembly dalla cartella /bin, così il CLR non potrà trovarlo.

ciao

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
29 messaggi dal 24 marzo 2008
Ciao BrightSoul,
grazie mille per la risposta, sei stato veramente chiaro ed esaustivo. Come dicevo nel post è mia abitudine sovrascrivere tutto il contenuto nella cartella bin poichè non lavoro con nomi di assembly fissi, ed effettivamente questa pratica non mi ha mai causato problemi.
Grazie :)

Purtroppo la stessa applicazione sta creando problemi di globalizzazione sui campi decimali che pensavo di aver risolto. Ho aperto un thread in merito e mi piacerebbe avere il tuo parere tecnico in merito
Modificato da dadox77 il 03 dicembre 2011 18.50 -

Nulla è reale...tutto è lecito...

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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC