AssemblyInfo.cs-Beispiele

AssemblyInfo.cs-Beispiele

# Globale und lokale AssemblyInfo

Eine globale ermöglicht eine bessere DRYness, Sie müssen nur unterschiedliche Werte in AssemblyInfo.cs für Projekte einfügen, die Abweichungen aufweisen. Diese Verwendung setzt voraus, dass Ihr Produkt mehr als ein Visual Studio-Projekt hat.

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 – eine für jedes Projekt

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

Sie können GlobalAssemblyInfo.cs mithilfe des folgenden Verfahrens zum lokalen Projekt hinzufügen:

  1. Wählen Sie Add/Existing Item... im Kontextmenü des Projekts
  2. Wählen Sie GlobalAssemblyInfo.cs aus
  3. Erweitern Sie den Hinzufügen-Button, indem Sie auf den kleinen Abwärtspfeil auf der rechten Seite klicken
  4. Wählen Sie "Als Link hinzufügen" in der Dropdown-Liste der Schaltflächen aus

# [AssemblyVersion]

Dieses Attribut wendet eine Version auf die Assembly an.

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

Der * Zeichen wird verwendet, um einen Teil der Version automatisch jedes Mal zu erhöhen, wenn Sie kompilieren (oft für die "Build"-Nummer verwendet)

# [AssemblyTitle]

Dieses Attribut wird verwendet, um dieser bestimmten Assembly einen Namen zu geben.

[assembly: AssemblyTitle("MyProduct")]

# [AssemblyProduct]

Dieses Attribut wird verwendet, um das Produkt zu beschreiben, für das diese bestimmte Baugruppe vorgesehen ist. Mehrere Baugruppen können Komponenten desselben Produkts sein, in diesem Fall können sie alle denselben Wert für dieses Attribut haben.

[assembly: AssemblyProduct("MyProduct")]

# Automatisierte Versionierung

Ihr Code in der Quellcodeverwaltung hat Versionsnummern entweder standardmäßig (SVN-IDs oder Git-SHA1-Hashes) oder explizit (Git-Tags). Anstatt Versionen in AssemblyInfo.cs manuell zu aktualisieren, können Sie einen Build-Time-Prozess verwenden, um die Version aus Ihrem Versionsverwaltungssystem in Ihre AssemblyInfo.cs-Dateien und damit in Ihre Assemblys zu schreiben.

Beispiele dafür sind die NuGet-Pakete GitVersionTask oder SemVer.Git.Fody. Um beispielsweise GitVersionTask zu verwenden, entfernen Sie nach der Installation des Pakets in Ihrem Projekt die Assembly*Version Attribute aus Ihren AssemblyInfo.cs-Dateien. Dadurch übernimmt GitVersionTask die Versionierung Ihrer Assemblys.

Beachten Sie, dass die semantische Versionierung zunehmend de facto ist Standard, daher empfehlen diese Methoden die Verwendung von Quellcodeverwaltungs-Tags, die SemVer folgen.

# Gemeinsame Felder

Es empfiehlt sich, die Standardfelder Ihrer AssemblyInfo auszufüllen. Die Informationen können von Installern erfasst werden und werden dann angezeigt, wenn Programme und Funktionen (Windows 10) verwendet werden, um ein Programm zu deinstallieren oder zu ändern.

Das Minimum sollte sein:

  • AssemblyTitle – normalerweise der Namensraum, d.h. MeinUnternehmen.MeineLösung.MeinProjekt
  • AssemblyCompany – der vollständige Name der juristischen Person
  • AssemblyProduct - Marketing kann hier einen Blick darauf werfen
  • AssemblyCopyright - halten Sie es auf dem neuesten Stand, da es sonst ungepflegt aussieht

„AssemblyTitle“ wird zur „Dateibeschreibung“, wenn Sie die Registerkarte „Eigenschaftendetails“ der DLL untersuchen.

# [InternalsVisibleTo]

Wenn Sie internal machen möchten Klassen oder Funktionen einer Assembly, auf die von einer anderen Assembly aus zugegriffen werden kann, deklarieren Sie dies mit InternalsVisibleTo und der Name der Assembly, auf die zugegriffen werden darf.

In diesem Beispielcode in der Assembly MyAssembly.UnitTests darf internal anrufen Elemente aus MyAssembly .

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

Dies ist besonders nützlich für Komponententests, um unnötiges public zu vermeiden Erklärungen.

# Assembly-Attribute lesen

Mithilfe der umfangreichen Reflection-APIs von .NET können Sie auf die Metadaten einer Assembly zugreifen. Sie können beispielsweise this erhalten Titelattribut der Assembly mit dem folgenden Code

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}");

# [AssemblyConfiguration]

AssemblyConfiguration:Das AssemblyConfiguration-Attribut muss die Konfiguration aufweisen, die zum Erstellen der Assembly verwendet wurde. Verwenden Sie die bedingte Kompilierung, um unterschiedliche Assemblykonfigurationen ordnungsgemäß einzuschließen. Verwenden Sie den Block ähnlich wie im folgenden Beispiel. Fügen Sie so viele verschiedene Konfigurationen hinzu, wie Sie normalerweise verwenden.

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

# [AssemblyKeyFile]

Wann immer wir möchten, dass unsere Assembly in GAC installiert wird, muss sie einen starken Namen haben. Für die Strong Naming Assembly müssen wir einen öffentlichen Schlüssel erstellen. Um den .snk zu generieren Datei.

So erstellen Sie eine Schlüsseldatei mit starkem Namen

    - Entwickler-Eingabeaufforderung für VS2015 (mit Administratorzugriff)- Geben Sie an der Eingabeaufforderung cd C:\Directory_Name ein und drücken Sie die EINGABETASTE.- Geben Sie an der Eingabeaufforderung sn -k KeyFileName.snk ein und drücken Sie dann die EINGABETASTE.

Sobald die keyFileName.snk im angegebenen Verzeichnis erstellt wurde, geben Sie in Ihrem Projekt eine Referenz an. Geben Sie AssemblyKeyFileAttribute ein Ordnen Sie den Pfad snk zu Datei, um den Schlüssel zu generieren, wenn wir unsere Klassenbibliothek erstellen.

Eigenschaften -> AssemblyInfo.cs

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

Dadurch wird nach dem Build eine Assembly mit starkem Namen erstellt. Nachdem Sie Ihre Assembly mit starkem Namen erstellt haben, können Sie sie in GAC installieren

Viel Spaß beim Programmieren 😃

# Bemerkungen

Der Dateiname AssemblyInfo.cs wird per Konvention als Quelldatei verwendet, in der Entwickler Metadatenattribute platzieren, die die gesamte Assembly beschreiben, die sie erstellen.


No