2012-06-26 12 views
5

Sto lavorando su una grande applicazione web implementata in ASP.net. La parte principale dell'applicazione, in gran parte implementata da una terza parte, è gestita da altri, quindi non ho molto controllo su di essa.ASP.net: Posso avere 2 versioni diverse della stessa DLL/assemblaggio nella cartella bin?

Ho implementato 8 controlli personalizzati ASP.net che compilano per separare DLL e vengono inseriti nella cartella bin dell'applicazione. Questi controlli devono collegarsi a un paio di DLL (o dovrebbero essere assiemi?) Dall'applicazione principale che sono anche memorizzati nella cartella bin. Chiamiamoli MainAppCore1.dll e MainAppCore2.dll. Questi sembrano essere gestiti dal codice .NET.

Il mio problema è che l'applicazione principale è stata aggiornata, e peggio sembra che venga regolarmente aggiornata nel prossimo futuro, a causa di problemi di bug Ho compilato tutti i miei controlli rispetto alla versione originale delle DLL delle app principali, quindi ora non caricheranno. Ovviamente posso risolvere il problema ricompilando tutti i controlli contro le nuove versioni di MainAppCore1.dll e MainAppCore2.dll ma sto cercando un modo più intelligente

La mia domanda è: è possibile mantenere 2 versioni dei principali DLL app nel cartella bin in modo che i miei controlli continuino a funzionare (probabilmente) ogni volta che viene aggiornata l'app principale?

Non voglio modificare il file web.config in quanto sarebbe politicamente complicato.

+0

È l'applicazione principale nel controllo del codice sorgente? – IrishChieftain

+0

Buona domanda: no non lo è! E non posso farci niente. – Annabel

risposta

4

In breve e semplicemente, non è possibile. In linea generale, avere due versioni di .net assembly in una singola cartella è possibile solo nella cartella GAC ​​(Global Assembly Cache) che è una cartella speciale, in cui possono essere eseguite più versioni di .Net assembly e gli assembly di controllo possono puntare a una versione specifica in GAC , indipendentemente da quante versioni esistono in là. Una possibile soluzione è chiedere ai fornitori di terze parti di dare un nome forte a MainCore1.dll e installarlo in GAC, ogni volta che la versione cambia, e quindi in web.config puoi puntare a una versione specifica.

1

Inserisci i tuoi 8 controlli personalizzati nel proprio progetto di libreria e fai riferimento a quel progetto da quello principale. Presumibilmente tutto è nel controllo del codice sorgente quindi non ci dovrebbero essere problemi di versioning quando si esegue un "Get latest".

+0

L'applicazione principale non è nel controllo del codice sorgente - o la maggior parte di essa sarà nel controllo del codice sorgente di terze parti. E non posso chiedere loro di collegarsi al mio codice in quanto forniscono una piattaforma per vendere a più clienti. – Annabel

Problemi correlati