una - juegos en c# visual studio
¿Cómo hago que los números de versión automáticos funcionen en Visual Studio? (5)
Me han pedido que agregue numeración automática a los ensamblajes en nuestra biblioteca de códigos. He estado cambiando las versiones de la versión predeterminada 1.0.0.0 a 1.0. * Como esta:
[ensamblado: AssemblyVersion ("1.0. *")]
Genera un número como me gustaría.
Sin embargo, la biblioteca de códigos tiene muchos cientos de DLL, y muchos hacen referencia entre sí. Ahora, cuando compilo algunos proyectos, se quejan de que la versión de una DLL que necesita un componente al que se hace referencia no es correcta y no se construirán :(
¿Cómo puedo hacer este trabajo? Lo necesitamos para que cuando se compile una DLL en la parte inferior de la jerarquía de nuestra biblioteca de códigos, todas las demás DLL que hacen referencia a ella funcionen correctamente sin necesidad de compilarlas.
El error que recibo es así:
Error 1 CA0058 : The referenced assembly ''Library1, Version=1.0.4146.17993
, Culture=neutral, PublicKeyToken=d9c65edd2096ad48'' could not be found. This assembly
is required for analysis and was referenced by:
D:/Work/Source Code/Library/Library2/bin/Release/Library2.dll.
La versión 1.0.4146.17993 no es correcta: la DLL tiene un valor más alto. Las DLL están configuradas para Copiar Local porque el software que entregamos lo requiere (no pregunte por qué). El DLL que se copia localmente es el que tiene el número de versión más alto, que es el que queremos que sea.
Hasta ahora he intentado cambiar las referencias para establecer el indicador "Versión específica" en falso, pero esto no ayudó.
En realidad, esta es una pregunta bastante profunda, y espero que alguien la responda en detalle, pero mis 2 centavos después de que tenga el control de la información de ensamblaje es que debería usar Nuget
para administrar sus dependencias. De esta manera, cuando el equipo A lanza v2 del conjunto X, todo lo que hacen es ponerlo en su repositorio de Nuget (probablemente, compartir en la red) y luego, básicamente, puede hacer clic derecho en <actualizar dentro de sus proyectos que consumen los DLL.
También recomendaría consultar http://semver.org/ y usar Versing semántico, si no desea seguir un sistema como este (o instituir un estándar similar para su tienda), probablemente no valga la pena intentarlo. Versión de sus DLL sólo va a darte dolores de cabeza masivos. Sin embargo, el uso del control de versiones semántico hará que sus números de versión realmente SEAN de algo. Y no solo ser lo que se siente como ser etiquetado en la versión actual.
Los números de versión que VS genera cuando usa la sintaxis 1.0.*
No necesariamente aumentarán en secuencia . La documentation tiene esto que decir (énfasis agregado):
Puede especificar todos los valores o puede aceptar el número de compilación predeterminado, el número de revisión o ambos usando un asterisco ( ). Por ejemplo, [assembly: AssemblyVersion ("2.3.25.1")] indica 2 como versión principal, 3 como versión menor, 25 como número de compilación y 1 como número de revisión. Un número de versión como [assembly: AssemblyVersion ("1.2. ")] Especifica 1 como la versión principal, 2 como la versión secundaria, y acepta los números predeterminados de compilación y revisión. Un número de versión como [assembly: AssemblyVersion ("1.2.15. *")] Especifica 1 como versión principal, 2 como versión secundaria, 15 como número de compilación y acepta el número de revisión predeterminado. El número de compilación predeterminado aumenta diariamente. El número de revisión predeterminado es aleatorio.
Si es vital que las versiones sean correctas, le recomiendo que utilice una solución de terceros. El complemento Build Version Increment es excelente.
Lo que quieres hacer es administrar la versión de ensamblaje por ti mismo. Solo incremente esto cuando realice un cambio importante en la interfaz pública del ensamblaje. Cambiar este atributo hace que su ensamblaje sea incompatible con otros ensamblajes que lo hagan referencia, incluso si no cambió nada en su código. En su lugar, lo único que desea incrementar automáticamente es la versión del archivo de ensamblaje. A diferencia de la versión de ensamblaje, CLR no comprueba este atributo para determinar la compatibilidad.
El complemento Build Version Increment le brinda el tipo de control detallado sobre el incremento que necesita para obtener este derecho. Es lo que probablemente debería incluirse en VS para empezar.
Tenga en cuenta que el número de revisión no es aleatorio. Es la hora del día de la construcción. El Build es el número del día.
Ver VisualStudio: traducir una versión de compilación a una fecha del calendario
elimine su referencia (en el proyecto que la usa) y vuelva a hacerlo apuntando al tipo de referencia del proyecto.
PD: Si cuando agrega la referencia, elige navegar y señalar a un lugar donde siempre estará el dll, ¡la referencia no se romperá!
> However, the code library has many hundreds of DLLs,
Si está bien para usted que todos los proyectos de origen y sus dll-s generados tengan el mismo número de versión, puede colocar el número de versión en un archivo que se comparte entre todos los dll como se describe en AssemblyInfo.cs compartido . Por lo tanto, usted (o el generador de número de versión que está utilizando) debe actualizar solo un archivo si hay una nueva versión / versión.
Esto no responde a su pregunta original, pero puede ser un trabajo simple para el problema de la dependencia.