¿Qué cambios en un ensamblaje de nombre fuerte requieren un cambio en AssemblyVersionAttribute? Claramente, cambiar la API pública de una manera que podría requerir que un cliente tenga que hacer un cambio de código requiere un aumento en AssemblyVersion. Pero, ¿qué pasa con los cambios en la API pública que no requieren cambios de código en el cliente? Por ejemplo:.NET: con respecto a AssemblyVersion, ¿qué define la compatibilidad binaria?
- ¿la adición de una clase pública o interfaz?
- la adición de un miembro público a una clase pública o interfaz? (EDITAR: drscroogemcduck señala correctamente que añadir un miembro a una interfaz sería para todos los implementadores. Tonto.)
- ¿Aumento de la visibilidad de un miembro de la clase?
Tiene que haber documentación definitiva de esto en algún lugar de MSDN (o, conociendo a MS, en el blog personal de MSSE). Pero simplemente no puedo encontrarlo. ¡Por favor ayuda!
Dos preguntas: * me puede apuntar a la documentación - oficiales o no - en su primera declaración? * ¿te importaría elaborar tu segunda declaración? En este caso particular, quiero aumentar la visibilidad, desde lo interno a lo público, del contenido de una clase pública. No está claro para mí cómo esto podría llevar a (la versión GAC de) DLL infierno. – cero
Primero: Tendría que buscarlo. Básicamente, el JIT compila métodos tan tarde como sea necesario. La unión final ocurre solo cuando el JIT compila el método, por lo que si el método está allí y coincide con la firma, funcionará, esa es mi experiencia. Sin embargo, agregar métodos a interfaces públicas no sería una buena idea, ya que eso podría llevar a métodos faltantes. – Lucero
En cuanto a la segunda instrucción, cambiar el código y dejar la identidad de su ensamblador igual puede llevar a un comportamiento diferente. Por ejemplo, cuando realiza una reflexión, especifica si desea encontrar miembros privados o públicos. Si uno solo utiliza el enlace "privado", ya no encontrará el ctor (en su caso), y el usuario recibirá un mensaje de error a pesar de que él (y el tiempo de ejecución) cree que es la misma versión ...y puede confundir el tiempo de ejecución si la asamblea también estuvo en el GAC. No lo hagas – Lucero