Esempi di AssemblyInfo.cs

Esempi di AssemblyInfo.cs

# AssemblyInfo globale e locale

Avere un globale consente una migliore DRYness, devi solo inserire valori diversi in AssemblyInfo.cs per i progetti con varianza. Questo utilizzo presuppone che il tuo prodotto abbia più di un progetto di studio visivo.

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 per ogni progetto

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

È possibile aggiungere GlobalAssemblyInfo.cs al progetto locale utilizzando la procedura seguente:

  1. Seleziona Aggiungi/Elemento esistente... nel menu contestuale del progetto
  2. Seleziona GlobalAssemblyInfo.cs
  3. Espandi il pulsante Aggiungi facendo clic su quella piccola freccia in basso a destra
  4. Seleziona "Aggiungi come collegamento" nell'elenco a discesa dei pulsanti

# [AssemblyVersion]

Questo attributo applica una versione all'assembly.

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

Il * il carattere viene utilizzato per incrementare automaticamente una parte della versione automaticamente ogni volta che si compila (spesso usato per il numero di "build")

# [AssemblyTitle]

Questo attributo viene utilizzato per dare un nome a questo particolare assembly.

[assembly: AssemblyTitle("MyProduct")]

# [AssemblyProduct]

Questo attributo viene utilizzato per descrivere il prodotto a cui è destinato questo particolare assieme. Più assiemi possono essere componenti dello stesso prodotto, nel qual caso possono condividere tutti lo stesso valore per questo attributo.

[assembly: AssemblyProduct("MyProduct")]

# Versione automatizzata

Il codice nel controllo del codice sorgente ha numeri di versione per impostazione predefinita (ID SVN o hash Git SHA1) o esplicitamente (tag Git). Invece di aggiornare manualmente le versioni in AssemblyInfo.cs, puoi utilizzare un processo di compilazione per scrivere la versione dal tuo sistema di controllo del codice sorgente nei tuoi file AssemblyInfo.cs e quindi nei tuoi assembly.

I pacchetti GitVersionTask o SemVer.Git.Fody NuGet sono esempi di quanto sopra. Per usare GitVersionTask, ad esempio, dopo aver installato il pacchetto nel tuo progetto rimuovi Assembly*Version attributi dai file AssemblyInfo.cs. Questo mette GitVersionTask responsabile del controllo delle versioni degli assembly.

Tieni presente che il controllo delle versioni semantico è sempre più de facto standard, quindi questi metodi consigliano di utilizzare tag di controllo del codice sorgente che seguono SemVer.

# campi comuni

È buona norma completare i campi predefiniti di AssemblyInfo. Le informazioni possono essere raccolte dagli installatori e verranno quindi visualizzate quando si utilizzano Programmi e funzionalità (Windows 10) per disinstallare o modificare un programma.

Il minimo dovrebbe essere:

  • AssemblyTitle - in genere lo spazio dei nomi, ovvero MyCompany.MySolution.MyProject
  • AssemblyCompany - il nome completo delle persone giuridiche
  • AssemblyProduct - il marketing potrebbe avere una vista qui
  • AssemblyCopyright:tienilo aggiornato altrimenti sembrerebbe trasandato

'AssemblyTitle' diventa la 'Descrizione del file' quando si esamina la scheda Dettagli delle proprietà della DLL.

# [InternalsVisibleTo]

Se vuoi fare internal classi o funzioni di un assembly accessibili da un altro assembly lo dichiari tramite InternalsVisibleTo e il nome dell'assembly a cui è consentito l'accesso.

In questo esempio codice nell'assembly MyAssembly.UnitTests può chiamare internal elementi da MyAssembly .

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

Ciò è particolarmente utile per gli unit test per evitare public non necessari dichiarazioni.

# Attributi di assemblaggio di lettura

Utilizzando le API di riflessione avanzata di .NET, puoi accedere ai metadati di un assembly. Ad esempio, puoi ottenere this attributo title dell'assembly con il codice seguente

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:l'attributo AssemblyConfiguration deve avere la configurazione utilizzata per creare l'assembly.Utilizzare la compilazione condizionale per includere correttamente diverse configurazioni di assembly.Utilizzare il blocco simile all'esempio seguente. Aggiungi tutte le diverse configurazioni che usi comunemente.

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

# [AssemblyKeyFile]

Ogni volta che vogliamo che il nostro assembly venga installato in GAC, è necessario che abbia un nome forte. Per un assembly di nomi forti dobbiamo creare una chiave pubblica. Per generare il .snk file.

Per creare un file chiave con nome sicuro

    - Prompt dei comandi per sviluppatori per VS2015 (con accesso amministratore)- Al prompt dei comandi, digitare cd C:\Directory_Name e premere INVIO.- Al prompt dei comandi, digitare sn -k KeyFileName.snk, quindi premere INVIO.

una volta che keyFileName.snk è stato creato nella directory specificata, fornisci un riferimento nel tuo progetto. dai AssemblyKeyFileAttribute attribuire il percorso a snk file per generare la chiave quando creiamo la nostra libreria di classi.

Proprietà -> AssemblyInfo.cs

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

Questo creerà un assembly con un nome sicuro dopo la compilazione. Dopo aver creato il tuo assembly con nome sicuro, puoi installarlo in GAC

Buona codifica 😃

# Osservazioni

Il nome del file AssemblyInfo.cs viene utilizzato per convenzione come file di origine in cui gli sviluppatori inseriscono attributi di metadati che descrivono l'intero assieme che stanno costruendo.


No