AssemblyVersionAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica la versione dell'assembly da attribuire.
public ref class AssemblyVersionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)]
public sealed class AssemblyVersionAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
public sealed class AssemblyVersionAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyVersionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)>]
type AssemblyVersionAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
type AssemblyVersionAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AssemblyVersionAttribute = class
inherit Attribute
Public NotInheritable Class AssemblyVersionAttribute
Inherits Attribute
- Ereditarietà
- Attributi
Esempio
Nell'esempio seguente viene usato l'attributo AssemblyVersionAttribute per assegnare un numero di versione a un assembly. In fase di compilazione, queste informazioni sulla versione vengono archiviate con i metadati dell'assembly. In fase di esecuzione, l'esempio recupera il valore della Type.Assembly proprietà in un tipo trovato nell'assembly per ottenere un riferimento all'assembly in esecuzione e recupera le informazioni sulla versione dell'assembly dalla Version proprietà dell'oggetto AssemblyName restituito dal Assembly.GetName metodo .
using System;
using System.Reflection;
[assembly:AssemblyVersionAttribute("2.0.1")]
public class Example1
{
public static void Main()
{
Assembly thisAssem = typeof(Example1).Assembly;
AssemblyName thisAssemName = thisAssem.GetName();
Version ver = thisAssemName.Version;
Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name);
}
}
// The example displays the following output:
// This is version 2.0.1.0 of Example1.
Imports System.Reflection
<Assembly:AssemblyVersionAttribute("2.0.1")>
Module Example1
Public Sub Main()
Dim thisAssem As Assembly = GetType(Example1).Assembly
Dim thisAssemName As AssemblyName = thisAssem.GetName()
Dim ver As Version = thisAssemName.Version
Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name)
End Sub
End Module
' The example displays the following output:
' This is version 2.0.1.0 of Example1.
Commenti
L'attributo AssemblyVersionAttribute viene usato per assegnare un numero di versione a un assembly. Tale numero di versione viene quindi archiviato con i metadati dell'assembly.
Il numero di versione dell'assembly fa parte dell'identità di un assembly e svolge una parte fondamentale nell'associazione all'assembly e nei criteri di versione. Il criterio di versione predefinito per il runtime è che le applicazioni vengono eseguite solo con le versioni compilate e testate con, a meno che non vengano sottoposte a override da criteri di versione espliciti nei file di configurazione (il file di configurazione dell'applicazione, il file dei criteri dell'editore e il file di configurazione dell'amministratore del computer). Per altre informazioni, vedere Assembly in .NET .
Annotazioni
Il controllo della versione si verifica solo per gli assembly con nome sicuro.
Il numero di versione ha quattro parti, come indicato di seguito:
<versione principale>.<versione secondaria>.<numero di build>.<revisione>
Importante
Tutti i componenti della versione devono essere numeri interi maggiori o uguali a 0. I metadati limitano i componenti principali, secondari, di compilazione e revisione per un assembly a un valore massimo pari UInt16.MaxValue a - 1. Se un componente supera questo valore, si verifica un errore di compilazione.
Ad esempio, [assembly:AssemblyVersion("2.3.25.1")] indica 2 come versione principale, 3 come versione secondaria, 25 come numero di build e 1 come numero di revisione.
L'attributo AssemblyVersionAttribute consente di specificare un asterisco (*) al posto del numero di compilazione o revisione. Un numero di versione, [assembly:AssemblyVersion("1.2.*")] ad esempio, specifica 1 come versione principale e 2 come versione secondaria e accetta i numeri di compilazione e revisione predefiniti. Un numero di versione, [assembly:AssemblyVersion("1.2.15.*")] ad esempio, specifica 1 come versione principale, 2 come versione secondaria e 15 come numero di build e accetta il numero di revisione predefinito. Il numero di build predefinito aumenta ogni giorno. Il numero di revisione predefinito è il numero di secondi dall'ora locale di mezzanotte (senza tenere conto delle regolazioni del fuso orario per l'ora legale), diviso per 2. Se si specifica un asterisco per il numero di build, non è possibile specificare un numero di revisione.
Importante
Uso dell'attributo AssemblyVersionAttribute che specifica un asterisco:
- Rende gli output di compilazione non riproducibili (vedere Build riproducibili). Se il progetto imposta
Deterministicla proprietà di compilazione sutrueun erroreCS8357viene segnalato dal compilatore. - Potrebbe compromettere le prestazioni di compilazione, in quanto impedisce la compilazione di output del compilatore di memorizzazione nella cache.
- Non è compatibile con le funzionalità Di modifica econtinuazione e ricaricamento rapido.
È possibile attenuare alcuni di questi problemi limitando l'uso di versioni basate sul tempo per rilasciare le compilazioni usando la compilazione condizionale, ad esempio:
#if DEBUG
[assembly: AssemblyVersion("1.0.0.0")]
#else
[assembly: AssemblyVersion("1.0.*")]
#endif
Un approccio migliore al controllo delle versioni consiste nel derivare l'assembly o la versione del HEAD file dal commit SHA (per i repository Git). Vedere, ad esempio , Nerdbank.GitVersioning.
Le versioni principali e secondarie dell'assembly vengono usate come numero di versione della libreria dei tipi quando l'assembly viene esportato. Alcuni host COM non accettano librerie dei tipi con il numero di versione 0.0. Pertanto, se si vuole esporre un assembly ai client COM, impostare la versione dell'assembly in modo esplicito su 1.0 nella pagina per i progetti creati all'esterno AssemblyVersionAttribute di Visual Studio 2005 e senza alcun AssemblyVersionAttribute valore specificato. Eseguire questa operazione anche quando la versione dell'assembly è 0.0. Tutti i progetti creati in Visual Studio 2005 hanno una versione di assembly predefinita 1.0.*.
Per ottenere il nome di un assembly caricato, chiamare GetName sull'assembly per ottenere un AssemblyNameoggetto e quindi ottenere la Version proprietà . Per ottenere il nome di un assembly non caricato, chiamare GetAssemblyName dall'applicazione client per verificare la versione dell'assembly usata dall'applicazione.
L'attributo AssemblyVersionAttribute può essere applicato una sola volta. Alcuni modelli di progetto di Visual Studio includono già l'attributo . In questi progetti, l'aggiunta dell'attributo nel codice causa un errore del compilatore.
Costruttori
| Nome | Descrizione |
|---|---|
| AssemblyVersionAttribute(String) |
Inizializza una nuova istanza della |
Proprietà
| Nome | Descrizione |
|---|---|
| TypeId |
Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute) |
| Version |
Ottiene il numero di versione dell'assembly con attributi. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| GetHashCode() |
Restituisce il codice hash per questa istanza. (Ereditato da Attribute) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsDefaultAttribute() |
Quando sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
| Match(Object) |
Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia. (Ereditato da Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto . (Ereditato da Attribute) |