Ejemplos de AssemblyInfo.cs

Ejemplos de AssemblyInfo.cs

# Información de ensamblaje global y local

Tener un global permite una mejor DRYness, solo necesita poner valores que son diferentes en AssemblyInfo.cs para proyectos que tienen varianza. Este uso supone que su producto tiene más de un proyecto de Visual Studio.

GlobalAssemblyInfo.cs

using System.Reflection;
using System.Runtime.InteropServices;
//using Stackoverflow domain as a made up example    

// It is common, and mostly good, to use one GlobalAssemblyInfo.cs that is added 
// as a link to many projects of the same product, details below
// Change these attribute values in local assembly info to modify the information.
[assembly: AssemblyProduct("Stackoverflow Q&A")]
[assembly: AssemblyCompany("Stackoverflow")]
[assembly: AssemblyCopyright("Copyright © Stackoverflow 2016")]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4e4f2d33-aaab-48ea-a63d-1f0a8e3c935f")]
[assembly: ComVisible(false)] //not going to expose ;)

// Version information for an assembly consists of the following four values:
// roughly translated from I reckon it is for SO, note that they most likely 
// dynamically generate this file
//      Major Version  - Year 6 being 2016
//      Minor Version  - The month
//      Day Number     - Day of month
//      Revision       - Build number
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below: [assembly: AssemblyVersion("year.month.day.*")]
[assembly: AssemblyVersion("2016.7.00.00")] 
[assembly: AssemblyFileVersion("2016.7.27.3839")]

AssemblyInfo.cs:uno para cada proyecto

//then the following might be put into a separate Assembly file per project, e.g.
[assembly: AssemblyTitle("Stackoveflow.Redis")]

Puede agregar GlobalAssemblyInfo.cs al proyecto local mediante el siguiente procedimiento:

  1. Seleccione Agregar/Artículo existente... en el menú contextual del proyecto
  2. Seleccione GlobalAssemblyInfo.cs
  3. Expanda el botón Agregar haciendo clic en esa pequeña flecha hacia abajo a la derecha
  4. Seleccione "Agregar como enlace" en la lista desplegable de botones

# [Versión de ensamblaje]

Este atributo aplica una versión al ensamblaje.

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

El * el carácter se usa para incrementar automáticamente una parte de la versión automáticamente cada vez que compila (a menudo se usa para el número de "compilación")

# [Título de asamblea]

Este atributo se utiliza para dar un nombre a este ensamblaje en particular.

[assembly: AssemblyTitle("MyProduct")]

# [Producto de ensamblaje]

Este atributo se utiliza para describir el producto para el que es este ensamblaje en particular. Varios ensamblajes pueden ser componentes del mismo producto, en cuyo caso todos pueden compartir el mismo valor para este atributo.

[assembly: AssemblyProduct("MyProduct")]

# Versiones automatizadas

Su código en el control de código fuente tiene números de versión de forma predeterminada (identificadores SVN o hashes Git SHA1) o explícitamente (etiquetas Git). En lugar de actualizar manualmente las versiones en AssemblyInfo.cs, puede usar un proceso de tiempo de compilación para escribir la versión desde su sistema de control de código fuente en sus archivos AssemblyInfo.cs y, por lo tanto, en sus ensamblajes.

Los paquetes GitVersionTask o SemVer.Git.Fody NuGet son ejemplos de lo anterior. Para usar GitVersionTask, por ejemplo, después de instalar el paquete en su proyecto, elimine el Assembly*Version atributos de sus archivos AssemblyInfo.cs. Esto pone a GitVersionTask a cargo de crear versiones de sus ensamblajes.

Tenga en cuenta que el control de versiones semántico es cada vez más el de facto estándar, por lo que estos métodos recomiendan el uso de etiquetas de control de código fuente que siguen a SemVer.

# Campos comunes

Es una buena práctica completar los campos predeterminados de su AssemblyInfo. Los instaladores pueden recoger la información y luego aparecerá cuando use Programas y características (Windows 10) para desinstalar o cambiar un programa.

El mínimo debe ser:

  • AssemblyTitle:generalmente el espacio de nombres, es decir, MiEmpresa.MiSolución.MiProyecto
  • AssemblyCompany - el nombre completo de las entidades legales
  • Producto de ensamblaje:el marketing puede tener una vista aquí
  • AssemblyCopyright:manténgalo actualizado, ya que de lo contrario se ve desaliñado

'AssemblyTitle' se convierte en la 'Descripción del archivo' al examinar la pestaña Detalles de propiedades de la DLL.

# [InternalsVisibleTo]

Si quieres hacer internal clases o funciones de un ensamblado accesible desde otro ensamblado, declara esto mediante InternalsVisibleTo y el nombre del ensamblado al que se le permite acceder.

En este código de ejemplo en el ensamblado MyAssembly.UnitTests se le permite llamar a internal elementos de MyAssembly .

[assembly: InternalsVisibleTo("MyAssembly.UnitTests")]

Esto es especialmente útil para pruebas unitarias para evitar public innecesarios declaraciones.

# Atributos de ensamblaje de lectura

Con las API de reflexión enriquecidas de .NET, puede obtener acceso a los metadatos de un ensamblaje. Por ejemplo, puede obtener this atributo de título del ensamblado con el siguiente código

using System.Linq;
using System.Reflection;

...

Assembly assembly = typeof(this).Assembly;
var titleAttribute = assembly.GetCustomAttributes<AssemblyTitleAttribute>().FirstOrDefault();

Console.WriteLine($"This assembly title is {titleAttribute?.Title}");

# [Configuración de ensamblaje]

AssemblyConfiguration:el atributo AssemblyConfiguration debe tener la configuración que se usó para construir el ensamblaje. Use la compilación condicional para incluir correctamente diferentes configuraciones de ensamblaje. Use el bloque similar al ejemplo a continuación. Agregue tantas configuraciones diferentes como use habitualmente.

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

# [archivo de clave de ensamblaje]

Siempre que queramos que nuestro ensamblaje se instale en GAC, debe tener un nombre seguro. Para un ensamblaje de nombres seguro, tenemos que crear una clave pública. Para generar el .snk archivo.

Para crear un archivo de clave de nombre seguro

    - Símbolo del sistema para desarrolladores para VS2015 (con acceso de administrador)- En el símbolo del sistema, escriba cd C:\Directory_Name y presione ENTRAR.- En el símbolo del sistema, escriba sn -k KeyFileName.snk y luego presione ENTRAR.

una vez que keyFileName.snk se crea en el directorio especificado, dé referencia en su proyecto. dar AssemblyKeyFileAttribute atribuye la ruta a snk archivo para generar la clave cuando construimos nuestra biblioteca de clases.

Propiedades -> AssemblyInfo.cs

[assembly: AssemblyKeyFile(@"c:\Directory_Name\KeyFileName.snk")]

Esto creará un ensamblado de nombre seguro después de la compilación. Después de crear su ensamblaje de nombre seguro, puede instalarlo en GAC

Codificación feliz 😃

# Comentarios

El nombre de archivo AssemblyInfo.cs se usa por convención como el archivo de origen donde los desarrolladores colocan atributos de metadatos que describen todo el ensamblaje que están creando.


No