Me preguntaba cómo podría incrementar automáticamente la compilación (¿y la versión?) De mis archivos usando Visual Studio (2005).
Si busco las propiedades de say C:\Windows\notepad.exe
, la pestaña Versión muestra "Versión del archivo: 5.1.2600.2180". También me gustaría obtener estos números geniales en la versión de mi dll, no en la versión 1.0.0.0, lo que seamos un poco aburridos.
Intenté algunas cosas, pero no parece ser una funcionalidad lista para usar, o tal vez solo estoy buscando en el lugar equivocado (como de costumbre).
Trabajo principalmente con proyectos web ...
Miré a ambos:
- http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
- http://www.codeproject.com/KB/dotnet/build_versioning.aspx
y no podía creer que tanto esfuerzo para hacer algo sea una práctica estándar.
EDITAR: No funciona en VS2005 hasta donde puedo decir ( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )
fuente
Respuestas:
En Visual Studio 2008, los siguientes trabajos.
Busque el archivo AssemblyInfo.cs y encuentre estas 2 líneas:
Podrías intentar cambiar esto a:
Pero esto no le dará el resultado deseado, terminará con una Versión del producto de 1.0. * Y una Versión del archivo de 1.0.0.0 . No es lo que quieres!
Sin embargo, si elimina la segunda de estas líneas y solo tiene:
Luego, el compilador establecerá que la Versión del archivo sea igual a la Versión del producto y obtendrá el resultado deseado de un producto que se incrementa automáticamente y la versión del archivo que están sincronizados. Ej. 1.0.3266.92689
fuente
abra el archivo AssemblyInfo.cs y cambie
a
puede hacer esto en IDE yendo al proyecto -> propiedades -> información de ensamblaje
Sin embargo, esto solo le permitirá incrementar automáticamente la versión de ensamblaje y le dará el
cuadro de mensaje si intenta colocar un * en el campo de versión del archivo.
Así que simplemente abra el Assemblyinfo.cs y hágalo manualmente.
fuente
Otra opción para cambiar los números de versión en cada compilación es usar la tarea Versión de MSBuild.Community.Tasks . Simplemente descargue su instalador, instálelo, luego adapte el siguiente código y péguelo después
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
en su.csproj
archivo:Nota: Adapte la propiedad StartDate a su entorno local. Actualmente no utiliza la cultura invariante.
Para la tercera compilación el 14 de enero de 2010, esto crea un
VersionInfo.cs
con este contenido:Este archivo debe agregarse al proyecto (a través de Agregar elemento existente ) y las líneas
AssemblyVersion
yAssemblyFileVersion
deben eliminarseAssemblyInfo.cs
.Los diferentes algoritmos para el cambio de los componentes de la versión se describen en
$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.chm
y propiedades de versión .fuente
Se me ocurrió una solución similar a la de los cristianos, pero sin depender de las tareas de Community MSBuild, esta no es una opción para mí, ya que no quiero instalar estas tareas para todos nuestros desarrolladores.
Estoy generando código y compilando a un ensamblado y quiero incrementar automáticamente los números de versión. Sin embargo, no puedo usar el truco VS 6.0. * AssemblyVersion ya que incrementa automáticamente los números de compilación cada día y rompe la compatibilidad con los ensamblados que usan un número de compilación anterior. En cambio, quiero tener una versión de ensamblaje codificada pero una versión de ensamblaje de incremento automático. He logrado esto especificando AssemblyVersion en AssemblyInfo.cs y generando un VersionInfo.cs en MSBuild como este,
Esto generará un archivo VersionInfo.cs con un atributo Assembly para AssemblyFileVersion donde la versión sigue el esquema de YY.MM.DD.TTTT con la fecha de compilación. Debe incluir este archivo en su proyecto y construir con él.
fuente
[System.DateTime]::Now
en uno, de lo contrario, hay una condición de carrera que puede hacer que se use un número de compilación anterior si se construye cerca de la medianoche.DateTime.ToString
con fines demostrativos, o hay una razón particular?Instale el complemento Incremento de versión de compilación . Te da mucho más control que la opción *.
fuente
Para obtener los números de versión, intente
Para establecer el número de versión, cree / edite AssemblyInfo.cs
También como nota al margen, el tercer número es el número de días desde el 2/1/2000 y el cuarto número es la mitad de la cantidad total de segundos en el día. Entonces, si compila a medianoche, debería ser cero.
fuente
Hay una extensión de Visual Studio Automatic Versions que admite Visual Studio (2012, 2013, 2015) 2017 y 2019.
Capturas de pantalla
fuente
Establecer un * en el número de versión en AssemblyInfo o en las propiedades del proyecto como se describe en las otras publicaciones no funciona con todas las versiones de Visual Studio / .NET.
Afaik no funcionó en VS 2005 (sino en VS 2003 y VS 2008). Para VS 2005 puede usar lo siguiente: Incremento automático Versión de versión de Visual Studio 2005 y número de revisión en tiempo de compilación .
Pero tenga en cuenta que no se recomienda cambiar el número de versión automáticamente para los ensamblados con nombre seguro. La razón es que todas las referencias a dicho ensamblaje deben actualizarse cada vez que se reconstruye el ensamblado al que se hace referencia debido al hecho de que las referencias de ensamblaje con nombre seguro siempre son una referencia a una versión de ensamblaje específica. Los propios Microsoft cambian el número de versión de los ensamblados de .NET Framework solo si hay cambios en las interfaces. (Nota: todavía estoy buscando el enlace en MSDN donde lo leí).
fuente
Para obtener información incremental (DateTime) en la propiedad AssemblyFileVersion que tiene la ventaja de no romper ninguna dependencia.
Basándose en la solución de Boog (¿no funcionó para mí, tal vez debido a VS2008?), Puede usar una combinación de un evento previo a la compilación que genera un archivo, agrega ese archivo (incluidas sus propiedades de versión) y luego usa una forma de leer esos valores de nuevo. Es decir..
Evento previo a la compilación:
Incluya el archivo VersionInfo.cs resultante (subcarpeta de propiedades) en su proyecto
Código para recuperar la fecha (años a segundos):
No es muy cómodo ... además, no sé si crea muchas reconstrucciones forzadas (ya que un archivo siempre cambia).
Podría hacerlo más inteligente, por ejemplo, si solo actualiza el archivo VersionInfo.cs cada pocos minutos / horas (mediante el uso de un archivo temporal y luego copiando / sobrescribiendo el VersionInfo.cs real si se detecta un cambio lo suficientemente grande). Hice esto una vez con bastante éxito.
fuente
Establezca el número de versión en "1.0. *" Y completará automáticamente los dos últimos números con la fecha (en días desde algún punto) y la hora (la mitad de los segundos desde la medianoche)
fuente
Está en las propiedades de su proyecto en Publicar
(~ http://screencast.com/t/Vj7rhqJO )
fuente
Cake admite el parcheado de archivos AssemblyInfo. Con el pastel en las manos, tiene infinitas formas de implementar el incremento automático de versiones.
Ejemplo simple de versión incremental como lo hace el compilador de C #:
Aquí:
Tenga en cuenta que puede parchear no solo las versiones sino también toda otra información necesaria .
fuente
Ir al proyecto | Propiedades y luego Información de ensamblaje y luego Versión de ensamblaje y ponga un * en el último o el penúltimo cuadro (no puede incrementar automáticamente los componentes Mayor o Menor).
fuente
Use la tarea AssemblyInfo del proyecto MSBuild Community Tasks ( http://msbuildtasks.tigris.org/ ) e integrela en su archivo .csproj / .vbproj.
Tiene varias opciones, incluida una para vincular el número de versión con la fecha y la hora del día.
Recomendado.
fuente
A partir de ahora, para mi aplicación,
devoluciones
ver = 1.0.3251.27860
El valor 3251 es el número de días desde 1/1/2000. Lo uso para poner una fecha de creación de la versión en la pantalla de inicio de mi aplicación. Cuando trato con un usuario, puedo preguntarle la fecha de creación, que es más fácil de comunicar que un número largo.
(Soy un departamento de un solo hombre que apoya una pequeña empresa. Este enfoque puede no funcionar para usted).
fuente
Cambiar la información de ensamblaje funciona en VS2012. Parece extraño que no haya más soporte para esto en Visual Studio, pensarías que esto fue una parte básica del proceso de compilación / lanzamiento.
fuente
Cómo obtener la versión
{major}.{year}.1{date}.1{time}
Este es un poco experimental, pero me gusta. Inspirado por Jeff Atwood @ CodingHorror ( enlace ).
El número de versión resultante se convierte
1.2016.10709.11641
(es decir, 2016-07-09 16:41), lo que permite1
)Agregue un nuevo elemento a su proyecto, seleccione General -> Plantilla de texto, asígnele un nombre similar
CustomVersionNumber
y (cuando corresponda) comente elAssemblyVersion
yAssemblyFileVersion
dentroProperties/AssemblyInfo.cs
.Luego, al guardar este archivo o al crear el proyecto, esto regenerará un
.cs
archivo ubicado como un subelemento debajo del.tt
archivo creado .fuente
He creado una aplicación para incrementar la versión del archivo automáticamente.
agregue la siguiente línea a la línea de comando de evento de precompilación
C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs
Construye el proyecto
Para simplificar, la aplicación solo envía mensajes si hay un error, para confirmar que funcionó bien, deberá verificar la versión del archivo en 'Información de ensamblaje'
Nota: Deberá volver a cargar la solución en Visual Studio para el botón 'Información de ensamblaje' para llenar los campos, sin embargo, su archivo de salida tendrá la versión actualizada.
Para sugerencias y solicitudes, envíeme un correo electrónico a [email protected]
fuente
En Visual Studio 2019
No fue suficiente para mí agregar
Al construirlo me arroja este error
Solución
El formato fue finalmente aceptada después de la configuración I
Deterministic
aFalse
enproject.csproj
Editar:
Por alguna razón ajuste
Deterministic
aFalse
perdió mi archivo de configuración de cargarlo y guardarlo en diferentes lugares.Solución alterna:
Configuré un evento posterior a la compilación para incrementar el número de revisión:
Script por lotes de eventos posteriores a la compilación
Esto llama a un script de PowerShell llamado
autoincrement_version.ps1
pasar como argumento la ruta de acceso deAssemblyInfo.cs
Script Poweshell
Incrementa automáticamente el número de revisión usando Regex
fuente
Tal vez, para esta tarea, puede usar un código como este:
y llamarlo desde la carga del formulario.
Con este código, puede actualizar cualquier parte de la información del archivo en AssemblyInfo.cs (pero debe usar la estructura de directorios "estándar").
fuente
AssemblyInfoUtil . Gratis. Fuente abierta.
fuente
Estoy usando este enfoque https://stackoverflow.com/a/827209/3975786 colocando la plantilla T4 en "Elementos de solución" y usándola con "Agregar como enlace" dentro de cada proyecto.
fuente
Tal vez sea demasiado tarde para responder aquí, pero espero que eso resuelva el agitado problema de alguien.
Una forma automática de cambiar la versión de ensamblaje de todos sus proyectos mediante el script de PowerShell. Este artículo resolverá muchos de tus problemas.
fuente
Cada vez que hago una compilación, incrementa automáticamente el dígito menos significativo.
No tengo idea de cómo actualizar a los demás, pero al menos ya deberías estar viendo eso ...
fuente
Para cualquiera que use Tortoise Subversion, puede vincular uno de sus números de versión al número de Revisión de subversión de su código fuente. Esto me parece muy útil (¡a los auditores también les gusta esto!). Para ello, llame a la utilidad WCREV en su compilación previa y genere su AssemblyInfo.cs a partir de una plantilla.
Si su plantilla se llama AssemblyInfo.wcrev y se encuentra en el directorio AssemblyInfo.cs normal, y la tortuga está en el directorio de instalación predeterminado, entonces su comando Pre-Build se ve así (Nota: Todo en una línea):
El archivo de plantilla incluiría la cadena de sustitución de token wcrev: $ WCREV $
eg
Nota:
Como ahora se genera su AssemblyInfo.cs, no desea que se controle su versión.
fuente