2009-09-22 15 views
17

Ho bisogno di prendere una versione costruita di un'applicazione C# e modificare una delle dll di riferimento. Qual è il modo migliore per farlo, ho una versione specifica disattivata sulla dll di riferimento ma non appena provo a sostituire la dll con una versione più recente, ottengo il messaggio "Impossibile caricare il file o l'assembly XXXXX, Version = XXXXX. ? c'è un modo per fermare il caricatore da preoccuparsi della versione della DLL in modo che il dll sarà solo tenterà di caricareAggiornare una dll di riferimento in un progetto C# senza ricompilare il progetto

risposta

18

Sì, si può fare questo -. vedere l'articolo MSDN Redirecting Assembly Versions

si consiglia di leggere l'intero documenta, ma in sostanza coinvolge l'editore dell'assemblatore creando un "file di politica dell'editore" o il consumatore aggiungendo un bindingRedirect a un file app.config, come questo (copiato direttamente dall'articolo):

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="myAssembly" 
          publicKeyToken="32ab4ba45e0a69a1" 
          culture="en-us" /> 
     <bindingRedirect oldVersion="1.0.0.0" 
          newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

Alcune note:

  • Se non è stato specificato in modo esplicito vostra cultura (come molti non lo fanno), sarà essere "neutrale", piuttosto che "it-IT".

  • Se non si conosce già, è possibile ottenere della pubblica assemblea chiave di token utilizzando l'utilità nome forte, come questo: sn -t [AssemblyPath]

+0

che richiederebbe una ricompilazione, no vero? –

+0

Oppure, il file di configurazione è controllato solo in fase di esecuzione? –

+2

Questi file xml vengono controllati in fase di runtime. Vedi http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian

Problemi correlati