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 di cui definire l'attributo.
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 chiave nell'associazione all'assembly e nei criteri di versione. I criteri di versione predefiniti del runtime prevedono che l'applicazione venga eseguita solo con le versioni con cui è stata compilata e testata. Per modificare il comportamento predefinito, è possibile esprimere esplicitamente criteri di versione diversi nei file di configurazione (il file di configurazione dell'applicazione, il file dei criteri dell'autore e il file di configurazione dell'amministratore del computer). Per altre informazioni, vedere Assembly in .NET .
Nota
Il controllo di versione viene effettuato solo con assembly con nome sicuro.
Il numero di versione include quattro parti, come segue:
<versione> principale.<versione> secondaria.<numero> di compilazione.<Revisione>
Importante
Tutti i componenti della versione devono essere interi maggiori o uguali a 0. I metadati limitano i componenti principali, secondari, di compilazione e revisione per un assembly a un valore massimo di UInt16.MaxValue - 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 compilazione 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, ad esempio [assembly:AssemblyVersion("1.2.*")]
, specifica 1 come versione principale e 2 come versione secondaria e accetta i numeri di compilazione e revisione predefiniti. Numero di versione, ad esempio [assembly:AssemblyVersion("1.2.15.*")]
specifica 1 come versione principale, 2 come versione secondaria e 15 come numero di compilazione e accetta il numero di revisione predefinito. Il numero di compilazione predefinito aumenta ogni giorno. Il numero di revisione predefinito è il numero di secondi dall'ora locale di mezzanotte (senza prendere in considerazione le regolazioni del fuso orario per l'ora legale), diviso per 2. Se si specifica un asterisco per il numero di compilazione, 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
Deterministic
la proprietà di compilazione sutrue
un erroreCS8357
viene segnalato dal compilatore. - Potrebbe ridurre le prestazioni di compilazione, in quanto impedisce la compilazione di output del compilatore di memorizzazione nella cache.
- Non è compatibile con le funzionalità Modifica & Continua e Ricaricamento rapido.
È possibile attenuare alcuni di questi problemi limitando l'uso di versioni basate sul tempo per rilasciare 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 HEAD
versione del file dal commit SHA (per i repository Git). Vedere, ad esempio, Nerdbank.GitVersioning.
L'assembly principale e le versioni secondarie vengono usate come numero di versione della libreria dei tipi quando l'assembly viene esportato. Alcuni host COM non accettano librerie di 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 AssemblyVersionAttribute
specificare. Eseguire questa operazione anche quando la versione dell'assembly è 0.0. Tutti i progetti creati in Visual Studio 2005 hanno una versione predefinita dell'assembly 1.0.*.
Per ottenere il nome di un assembly caricato, chiamare GetName l'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 controllare 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
AssemblyVersionAttribute(String) |
Inizializza una nuova istanza della classe |
Proprietà
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
Version |
Ottiene il numero di versione dell'assembly con attributi. |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsDefaultAttribute() |
In caso di 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 equivale a un oggetto specificato. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
_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 relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a 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 a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |