Esta no es una pregunta problemática, sino una pregunta de comprensión general sobre el funcionamiento de la redirección de enlace de ensamblaje.
Consultas
- ¿Por qué la redirección de enlace muestra solo versiones principales y no números menores de compilación y revisión?
¿La versión antigua y la nueva cambian solo cuando hay un cambio en la versión principal?
<dependentAssembly> <assemblyIdentity name="FooBar" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" /> <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly>
c#
assembly-binding-redirect
Nikhil Agrawal
fuente
fuente
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"
Respuestas:
¿Por qué se necesitan redireccionamientos vinculantes? Suponga que tiene la aplicación A que hace referencia a la biblioteca B, y también a la biblioteca C de la versión 1.1.2.5. La Biblioteca B a su vez también hace referencia a la biblioteca C, pero de la versión 1.1.1.0. Ahora tenemos un conflicto, porque no puede cargar diferentes versiones del mismo ensamblaje en tiempo de ejecución. Para resolver este conflicto, puede usar la redirección de enlace, generalmente a la nueva versión (pero también puede ser a la anterior). Para ello, agregue lo siguiente al archivo app.config de la aplicación A, en la
configuration > runtime > assemblyBinding
sección (consulte aquí un ejemplo de archivo de configuración completo):También puede especificar un rango de versiones para asignar:
Ahora la biblioteca B, que se compiló con referencia a C de la versión 1.1.1.0, usará C de la versión 1.1.2.5 en tiempo de ejecución. Por supuesto, es mejor que se asegure de que la biblioteca C sea compatible con versiones anteriores o que esto pueda conducir a resultados inesperados.
Puede redirigir cualquier versión de las bibliotecas, no solo las principales.
fuente
Encontramos un problema con la redirección de enlace para NewtonSoft.Json. Buscamos la versión del archivo en las propiedades del archivo win 10 "9.0.1.19813", buscamos el número y la redirección seguía fallando. Investigando más y descubrimos que estábamos mirando la versión del archivo y no la versión del ensamblaje. Entonces, me pregunto si la gente está confundiendo la Versión del archivo (que cambia a menudo) y la Versión del ensamblaje (que no se puede ver en el Explorador de archivos de Windows 10). Para ver la versión de ensamblaje de un dll, puede ejecutar esto en powershell. Reemplace el nombre dll con el que desea encontrar la versión.
El resultado de arriba es.
Ver referencias:
¿Cómo puedo ver la versión de ensamblaje de un ensamblado .NET en Windows Vista y posterior (Windows 7, 2008)?
https://support.microsoft.com/en-nz/help/556041
fuente