2012-09-12 4 views
6

Die Standard AssemblyInfo.cs sieht wie folgt aus:Was ist in AssemblyInfo.cs zu haben?

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")] 

Was von all dem ist wirklich notwendig? Kann ich zum Beispiel die Guid und ComVisible entfernen, wenn ich das nicht brauche, oder die AssemblyTrademark, da sie sowieso leer ist?

+1

Was ist passiert, als Sie es versucht haben? –

+3

Nun, es stürzte nicht ab, aber ich fragte mich, ob es größere Implikationen gab, von denen ich nichts wusste, wie die Assembly in bestimmten Situationen unbrauchbar ist oder was auch immer :) – Svish

+0

Das einzige mögliche Problem, das ich mir vorstellen kann, ist mehrere Kopien zu machen einer Versammlung in der GAC. Sie können mehrere Versionen einer Baugruppe dort ablegen. Sie können mehrere Kopien derselben Version haben, wenn jede Kopie eine andere Kultur hat. Aber wenn die Versionsinformation fehlt, warum könnte das ein Problem sein. –

Antwort

9

Dies sind nur Metadaten - keine erforderlich als solche.

ComVisible und Guid werden nur benötigt, wenn Sie COM Interop mit der Baugruppe machen. Die anderen Attribute enden als Metadaten in der DLL (sichtbar über die Registerkarte Version des Dateieigenschaften-Dialogfelds im Windows Explorer).

Sie können die Datei löschen und Ihre Anwendung wird problemlos kompilieren, obwohl es keine Metadaten hat und nicht COM sichtbar sein wird.

3

Wirklich notwendig sind keine der Attribute. Aber es wird empfohlen, sie zu benutzen!

[assembly: AssemblyVersion("1.0.0.0")] 

Die Assembly gibt eine Version auf der Baugruppe und wird von der CLR verwendet, um eine Baugruppe (Strong) zu identifizieren. AssemblyFileVersion ist nur ein Attribut im FileDialog.

[assembly: AssemblyInformationalVersion("1.0.0.0")] 

Sie können aber andere Versionsinformationen wie Sie möchten. Ein weiteres wirklich schönes Attribut ist die folgende:

[assembly: SuppressIldasm] 

Es ist Unterdrückungs der Assembly in ildasm öffnen an dem IL-Code zu suchen.

Es gibt noch viel mehr über Baugruppenattribute zu schreiben. Sehen Sie sich die MSDN für weitere Informationen an.

+4

'SuppressIldasMAttribute' tut nichts anderes als" ask "' ildasm.exe', um die AWL für Ihre Assembly nicht auszugeben. * In keiner Weise * schützt dies Ihren Code. – tomfanning

+0

Sie haben recht, aber für jemanden, der keine großen Kenntnisse darüber hat, wie man IL ausspioniert, würde man aufhören. –

+0

Es braucht nicht viel Wissen um Reflektor oder ILSpy zu starten. – tomfanning

Verwandte Themen