228 votos

¿Puedo incrementar automáticamente la versión de compilación de archivos al utilizar Visual Studio?

Me preguntaba cómo podía automáticamente incremento de la construcción (versión?) de mis archivos con Visual Studio (2005).

Si miro las propiedades de decir C:\Windows\notepad.exe, la ficha Versión da "Archivo versión: 5.1.2600.2180". Me gustaría conseguir estos fabulosos números en la versión de la dll, no la versión 1.0.0.0, que deja la cara es un poco aburrido.

He intentado un par de cosas, pero no parece estar fuera-de-la funcionalidad del cuadro, o tal vez sólo estoy mirando en el lugar equivocado (como de costumbre).

Yo trabajo principalmente con proyectos web....

Miré a ambos:

  1. http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
  2. http://www.codeproject.com/KB/dotnet/build_versioning.aspx

y yo no podía creer lo mucho esfuerzo para hacer algo es una práctica estándar.

EDICIÓN: No funciona en VS2005 como mucho puedo decir (http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx)

278voto

Sam Meldrum Puntos 7405

En visual Studio 2008, las siguientes obras.

Encontrar el archivo AssemblyInfo.cs y encontrar estas 2 líneas:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Usted podría tratar de cambiar esto:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]

Pero esto no le dará el resultado deseado, usted va a terminar con un Producto de la Versión de 1.0.* y una Versión de Archivo de 1.0.0.0. No lo que usted desea!

Sin embargo, si se elimina la segunda de estas líneas y sólo tenemos:

[assembly: AssemblyVersion("1.0.*")]

A continuación, el compilador creará el Archivo de la Versión a ser igual a la Versión del Producto, y usted conseguirá el resultado deseado de una forma automática de incremento del producto y de la versión del archivo que está en la sincronización. Por ejemplo. 1.0.3266.92689

125voto

Hath Puntos 5505

abrir el archivo AssemblyInfo.cs y cambio

// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

a

[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

usted puede hacer esto en IDE por ir a proyecto -> propiedades -> información de la asamblea

Sin embargo, esto sólo permiten el incremento automático de la versión del Ensamblado y le dará la

La asamblea de la Versión del Archivo: Un comodín ("*") no está permitido en este campo

cuadro de mensaje si intenta colocar un * en el campo versión del archivo.

Tan sólo tiene que abrir la assemblyinfo.cs y hacerlo manualmente.

39voto

Christian Puntos 3966

Otra opción para cambiar los números de versión de cada generación es el uso de la Versión de la tarea de MSBuild.Community.Tasks. Sólo tiene que descargar su instalador, instale, luego adaptar el siguiente código y pégalo después <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> en tu .csproj archivo:

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<Target Name="BeforeBuild">
    <Version VersionFile="Properties\version.txt" Major="1" Minor="0" BuildType="Automatic" StartDate="12/31/2009" RevisionType="BuildIncrement">
      <Output TaskParameter="Major" PropertyName="Major" />
      <Output TaskParameter="Minor" PropertyName="Minor" />
      <Output TaskParameter="Build" PropertyName="Build" />
      <Output TaskParameter="Revision" PropertyName="Revision" />
    </Version>
    <AssemblyInfo CodeLanguage="CS"
                  OutputFile="Properties\VersionInfo.cs"
                  AssemblyVersion="$(Major).$(Minor)"
                  AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />
</Target>

Nota: Adaptar el StartDate de propiedad de su localidad. Actualmente no utilizar los invariantes de la cultura.

Para el tercer construir en enero 14, 2010, esto crea un VersionInfo.cs con este contenido:

[assembly: AssemblyVersion("1.0")]
[assembly: AssemblyFileVersion("1.0.14.2")]

Este archivo tiene que ser añadido para el proyecto (a través de Agregar elemento existente), y el AssemblyVersion y AssemblyFileVersion de las líneas tienen que ser retirados de AssemblyInfo.cs.

Los diferentes algoritmos para cambiar la versión de los componentes se describen en $(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.chm y Propiedades de la Versión.

8voto

0xA3 Puntos 73439

Configuración de un * en el número de versión en AssemblyInfo o en virtud de las propiedades del proyecto, como se describe en los otros puestos no funciona con todas las versiones de Visual Studio / .NET.

Afaik no trabajo en VS 2005 (pero en VS 2003 y VS 2008). Para el VS 2005, también se podría utilizar la siguiente: Auto Incremento versión de Visual Studio 2005 construir y el número de revisión en tiempo de compilación.

Pero ser consciente de que cambiar el número de versión de forma automática no está recomendado para ensamblados con nombre seguro. La razón es que todas las referencias a dicha asamblea deberá ser actualizada cada vez que la referencia de ensamblado es reconstruido por el hecho de que el ensamblado con nombre seguro referencias son siempre una referencia a una determinada versión del ensamblado. Microsoft cambian el número de versión de la .NET Marco asambleas sólo si hay cambios en las interfaces. (PD: todavía estoy buscando el enlace en MSDN donde leí eso).

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X