2012-09-12 77 views
6

Los AssemblyInfo.cs por defecto se ve así:¿Qué es necesario tener en AssemblyInfo.cs?

using System.Reflection; 
using System.Runtime.CompilerServices; 
using System.Runtime.InteropServices; 

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information 
// associated with an assembly. 
[assembly: AssemblyTitle("Foobar")] 
[assembly: AssemblyDescription("")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("")] 
[assembly: AssemblyProduct("Foobar")] 
[assembly: AssemblyCopyright("Copyright © 2012")] 
[assembly: AssemblyTrademark("")] 
[assembly: AssemblyCulture("")] 

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components. If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type. 
[assembly: ComVisible(false)] 

// The following GUID is for the ID of the typelib if this project is exposed to COM 
[assembly: Guid("e8cd5d7d-5fba-4fe1-a753-f0cc6e052bf2")] 

// Version information for an assembly consists of the following four values: 
// 
//  Major Version 
//  Minor Version 
//  Build Number 
//  Revision 
// 
// 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")] 

Qué de todo esto es realmente necesario? ¿Puedo, por ejemplo, eliminar el Guid y ComVisible si no lo necesito, o el AssemblyTrademark ya que está vacío de todos modos?

+1

¿Qué pasó cuando lo intentó? –

+3

Bueno, no se colgó, pero me preguntaba si había implicaciones mayores que no sabía, como que el ensamblaje no se puede usar en ciertas situaciones o lo que sea :) – Svish

+0

El único problema posible que se me ocurre es poner varias copias de una asamblea en el GAC. Puede poner varias versiones de un ensamblaje allí. Puede tener múltiples copias de la misma versión si cada copia tiene una cultura diferente. Pero si falta la información de la versión, podría ser un problema. –

Respuesta

9

Esto es sólo metadatos - ninguno de ellos es requerido como tal.

ComVisible y Guid solo son necesarios si está haciendo interoperabilidad COM con el conjunto. Los otros atributos terminan como metadatos en la DLL (visible a través de la pestaña Version del cuadro de diálogo de propiedades del archivo en Windows Explorer).

Puede eliminar el archivo y su aplicación compilará muy bien, aunque no tendrá metadatos y no será COM visible.

3

Realmente no es necesario ninguno de los atributos. ¡Pero se recomienda usarlos!

[assembly: AssemblyVersion("1.0.0.0")] 

El AssemblyVersion da una versión para el montaje y se usa de la CLR para identificar un conjunto (StrongName). AssemblyFileVersion es solo un atributo en FileDialog.

[assembly: AssemblyInformationalVersion("1.0.0.0")] 

No hay otra información de versión que desee. Otro atributo muy agradable es la siguiente:

[assembly: SuppressIldasm] 

Es reprimir a abrir su ensamblaje en ildasm mirar la IL-Code.

Hay muchos más por escribir sobre los atributos de ensamblaje. Puede ver el MSDN para obtener más información ..

+4

'SuppressIldasmAttribute' no hace más que" preguntar "a' ildasm.exe' para que no muestre el IL para su ensamblaje. * De ninguna manera * protege esto tu código. – tomfanning

+0

Tienes razón, pero para alguien que no tiene un gran conocimiento sobre cómo espiar IL, sería suspendido. –

+0

No se necesita un gran conocimiento para activar Reflector o ILSpy. – tomfanning

Cuestiones relacionadas