Zoeken…


Opmerkingen

De bestandsnaam AssemblyInfo.cs wordt volgens afspraak gebruikt als het bronbestand waar ontwikkelaars metagegevensattributen plaatsen die de volledige assemblage beschrijven die ze bouwen.

[AssemblyTitle]

Dit kenmerk wordt gebruikt om een naam te geven aan deze specifieke assembly.

[assembly: AssemblyTitle("MyProduct")]

[AssemblyProduct]

Dit kenmerk wordt gebruikt om het product te beschrijven waarvoor deze specifieke assemblage is bedoeld. Meerdere merken kunnen componenten van hetzelfde product zijn, in welk geval ze allemaal dezelfde waarde voor dit kenmerk kunnen delen.

[assembly: AssemblyProduct("MyProduct")]

Wereldwijde en lokale AssemblyInfo

Omdat een globaal systeem zorgt voor een betere DRYness, hoeft u alleen andere waarden in AssemblyInfo.cs te zetten voor projecten die verschillen. Bij dit gebruik wordt ervan uitgegaan dat uw product meerdere visuele studioprojecten heeft.

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 - één voor elk project

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

U kunt GlobalAssemblyInfo.cs aan het lokale project toevoegen met behulp van de volgende procedure :

  1. Selecteer Toevoegen / Bestaand Item ... in het contextmenu van het project
  2. Selecteer GlobalAssemblyInfo.cs
  3. Vouw de knop Toevoegen uit door op die kleine pijl-omlaag aan de rechterkant te klikken
  4. Selecteer "Toevoegen als link" in de vervolgkeuzelijst met knoppen

[AssemblyVersion]

Dit kenmerk past een versie toe op de assembly.

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

Het * -teken wordt gebruikt om elke keer dat u compileert een deel van de versie automatisch te verhogen (vaak gebruikt voor het "build" -nummer)

Vergaderingattributen lezen

Met de rijke reflectie-API's van .NET krijgt u toegang tot de metagegevens van een assemblage. U kunt bijvoorbeeld het titelkenmerk van this merk krijgen met de volgende 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}");

Geautomatiseerde versiebeheer

Uw code in bronbeheer heeft versienummers ofwel standaard (SVN-id's of Git SHA1 hashes) of expliciet (Git-tags). In plaats van versies in AssemblyInfo.cs handmatig bij te werken, kunt u een build-time proces gebruiken om de versie van uw bronbesturingssysteem naar uw AssemblyInfo.cs-bestanden en dus naar uw assemblies te schrijven.

De GitVersionTask- of SemVer.Git.Fody NuGet-pakketten zijn voorbeelden van het bovenstaande. Als u GitVersionTask bijvoorbeeld wilt gebruiken, verwijdert u na het installeren van het pakket in uw project de kenmerken Assembly*Version uit uw bestanden van AssemblyInfo.cs. Dit zorgt ervoor dat GitVersionTask de versies van uw assemblages beheert.

Merk op dat Semantic Versioning in toenemende mate de de facto standaard is, dus deze methoden bevelen het gebruik van broncontroletags aan die SemVer volgen.

Gemeenschappelijke velden

Het is een goede gewoonte om de standaardvelden van uw AssemblyInfo in te vullen. De informatie kan worden opgehaald door installatieprogramma's en verschijnt vervolgens bij het gebruik van Programma's en onderdelen (Windows 10) om een programma te verwijderen of te wijzigen.

Het minimum moet zijn:

  • AssemblyTitle - meestal de namespace, dat wil zeggen MyCompany.MySolution.MyProject
  • Assembly Company - de volledige naam van de rechtspersonen
  • AssemblageProduct - marketing kan hier een weergave hebben
  • AssemblyCopyright - houd het up-to-date omdat het er anders smerig uitziet

'AssemblyTitle' wordt de 'Bestandsbeschrijving' bij het onderzoeken van het tabblad Eigenschappen Details van de DLL.

[AssemblyConfiguration]

AssemblyConfiguration: het kenmerk AssemblyConfiguration moet de configuratie hebben die is gebruikt om de assembly te bouwen. Gebruik voorwaardelijke compilatie om verschillende assemblageconfiguraties correct op te nemen. Gebruik het blok vergelijkbaar met het onderstaande voorbeeld. Voeg zoveel verschillende configuraties toe als u gewoonlijk gebruikt.

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

[InternalsVisibleTo]

Als u internal klassen of functies van een assembly toegankelijk wilt maken vanuit een andere assembly, verklaart u dit door InternalsVisibleTo en de naam van de assembly die toegang heeft.

In dit voorbeeld is code in de assembly MyAssembly.UnitTests toegestaan om internal elementen vanuit MyAssembly aan te MyAssembly .

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

Dit is vooral handig voor het testen van eenheden om onnodige public verklaringen te voorkomen.

[AssemblyKeyFile]

Wanneer we onze assemblage in GAC willen installeren, dan moet het een sterke naam hebben. Voor een sterke naamgeving moeten we een openbare sleutel maken. Om het .snk bestand te genereren.

Een sterk naamsleutelbestand maken

  1. Opdrachtprompt voor ontwikkelaars voor VS2015 (met beheerderstoegang)
  2. Typ cd C: \ Directory_Name bij de opdrachtprompt en druk op ENTER.
  3. Typ sn -k KeyFileName.snk bij de opdrachtprompt en druk op ENTER.

zodra de keyFileName.snk in de opgegeven map is gemaakt, geeft u referentie in uw project. geef AssemblyKeyFileAttribute het pad naar het snk bestand om de sleutel te genereren wanneer we onze klassenbibliotheek bouwen.

Eigenschappen -> AssemblyInfo.cs

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

Thi zal na de bouw een sterke naamsamenstelling creëren. Nadat u uw sterke naamassemblage hebt gemaakt, kunt u deze vervolgens in GAC installeren

Happy Coding :)



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow