Condividi tramite


AssemblyVersionAttribute Classe

Definizione

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à
AssemblyVersionAttribute
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 su true un errore CS8357 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 AssemblyVersionAttribute con il numero di versione dell'assembly di cui definire l'attributo.

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)

Si applica a

Vedi anche