ho notato questa sezione nei miei file web.config per un po 'e ora sto cercando di ragionare che cosa esattamente lo scopo è:Qual è il significato/motivo per le voci generate in web.config> configuration> runtime> assemblyBinding?
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Quindi, la prima voce sembra dire:
System.Web.Helpers è il nome di un assieme dipendente con un token di chiave pubblica di
31bf3856ad364e35
. Redirect versione 1.0.0.0 tramite 2.0.0.0 alla versione 2.0.0.0.
La mia ipotesi migliore è che si intende qualsiasi codice in esecuzione nel contesto della fase di esecuzione ASP.NET che dipende da un assembly con il nome specificato, che ha anche una versione nell'intervallo specificato viene eseguito come se fosse compilato con la versione specificata con la chiave pubblica specificata.
Ciò significa che se ho un progetto Web che dipende da una libreria di classi e che la libreria di classi ha un riferimento a una versione precedente dell'assembly che ha aa bindingRedirect, che il codice verrà eseguito come se fosse compilato contro versione più nuova?
grazie, questa è l'informazione che speravo di ottenere. ti senti come lo capisci al punto che la tua risposta è autorevole? (per favore non prenderlo nel modo sbagliato) –
@AaronAnodide: no, non credo che la mia risposta sia autorevole. Questo è solo il modo in cui comprendo la documentazione e l'ho usato qualcosa come ... 3 volte. Non preoccuparti, non mi prendo male ;-) – jbl
Sì, voi ragazzi avete ragione, l'ho usato per lo stesso scopo; per esempio, dire che ho una libreria chiamata libA.dll e un'altra libreria chiamata libB.dll. La mia versione di libA.dll è compilata rispetto alla versione 1.0 di libB.dll. Ho aggiornato la mia applicazione con una versione più recente di libB.dll (ad esempio 1.5) e libA.dll non funziona più. Vorrei usare questa funzione per istruire il runtime per far sì che libA.dll funzioni con la versione più recente di libB.dll (l'altra, probabilmente l'opzione migliore è, se ho il codice sorgente di libA.dll per compilarlo contro la versione più recente di libB.dll). –