2009-09-22 41 views
17

Necesito tomar una versión integrada de una aplicación C# y cambiar una de las dll de referencia. ¿Cuál es la mejor manera de hacerlo? Tengo una versión específica desactivada en el dll de referencia, pero tan pronto como pruebo el reemplazo del dll por una versión más nueva, aparece el mensaje "No se pudo cargar el archivo o el ensamblaje XXXXX, Versión = XXXXX". ? hay una manera de detener el cargador de preocuparse por la versión de la DLL por lo que el DLL se acaba de intentar cargarActualizar un dll de referencia en un proyecto C# sin volver a compilar el proyecto

Respuesta

18

sí, se puede hacer esto -. vea el artículo de MSDN Redirecting Assembly Versions

debe leer la totalidad documento, pero esencialmente implica que el editor del ensamblaje cree un 'archivo de política del editor' o que el consumidor agregue un bindingRedirect a un archivo app.config, como este (copiado directamente del artículo):

<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> 

Unas pocas notas:

  • Si no se ha especificado explícitamente su cultura (como muchos no lo hacen), se ser "neutral" en lugar de "en-us".

  • Si aún no lo sepa, usted puede conseguir de la asamblea pública llave ficha usando la fuerte utilidad nombre, como esto: sn -t [AssemblyPath]

+0

que requeriría una recompilación, no lo haría ¿eso? –

+0

O, ¿el archivo de configuración se verificó solo en el tiempo de ejecución? –

+2

Esos archivos xml se verifican en tiempo de ejecución. Ver http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian

Cuestiones relacionadas