AssemblyName.Version Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает для сборки основной номер версии, промежуточный номер версии, номер построения и номер редакции.
public:
property Version ^ Version { Version ^ get(); void set(Version ^ value); };
public Version Version { get; set; }
public Version? Version { get; set; }
member this.Version : Version with get, set
Public Property Version As Version
Значение свойства
Объект, предоставляющий для сборки основной номер версии, промежуточный номер версии, номер построения и номер редакции.
Примеры
Этот раздел содержит два примера. В первом примере показано, как получить версию текущей выполняемой сборки. Во втором примере показано, как использовать Version свойство для указания версии сборки при создании динамической сборки.
Пример 1
В следующем примере извлекаются и отображаются номера версий текущей выполняемой сборки и сборки String , содержащей класс .
using namespace System;
using namespace System::Reflection;
[assembly:AssemblyVersion("1.1.0.0")];
void main()
{
Console::WriteLine("The version of the currently executing assembly is: {0}",
Assembly::GetExecutingAssembly()->GetName()->Version);
Console::WriteLine("The version of mscorlib.dll is: {0}",
String::typeid->Assembly->GetName()->Version);
}
/* This example produces output similar to the following:
The version of the currently executing assembly is: 1.1.0.0
The version of mscorlib.dll is: 2.0.0.0
*/
using System;
using System.Reflection;
[assembly:AssemblyVersion("1.1.0.0")]
class Example
{
static void Main()
{
Console.WriteLine("The version of the currently executing assembly is: {0}",
typeof(Example).Assembly.GetName().Version);
Console.WriteLine("The version of mscorlib.dll is: {0}",
typeof(String).Assembly.GetName().Version);
}
}
/* This example produces output similar to the following:
The version of the currently executing assembly is: 1.1.0.0
The version of mscorlib.dll is: 2.0.0.0
*/
Imports System.Reflection
<Assembly:AssemblyVersion("1.1.0.0")>
Class Example
Shared Sub Main()
Console.WriteLine("The version of the currently executing assembly is: {0} ", _
GetType(Example).Assembly.GetName().Version)
Console.WriteLine("The version of mscorlib.dll is: {0} ", _
GetType(String).Assembly.GetName().Version)
End Sub
End Class
' This example produces output similar to the following:
'
'The version of the currently executing assembly is: 1.1.0.0
'The version of mscorlib.dll is: 2.0.0.0
Пример 2
В следующем примере создается динамическая сборка и она сохраняется в текущем каталоге. При создании сборки Version свойство используется для указания сведений о версии сборки.
using namespace System;
using namespace System::Reflection;
using namespace System::Threading;
using namespace System::Reflection::Emit;
static void MakeAssembly( AssemblyName^ myAssemblyName, String^ fileName )
{
// Get the assembly builder from the application domain associated with the current thread.
AssemblyBuilder^ myAssemblyBuilder = Thread::GetDomain()->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::RunAndSave );
// Create a dynamic module in the assembly.
ModuleBuilder^ myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "MyModule", fileName );
// Create a type in the module.
TypeBuilder^ myTypeBuilder = myModuleBuilder->DefineType( "MyType" );
// Create a method called 'Main'.
MethodBuilder^ myMethodBuilder = myTypeBuilder->DefineMethod( "Main", static_cast<MethodAttributes>(MethodAttributes::Public | MethodAttributes::HideBySig | MethodAttributes::Static), void::typeid, nullptr );
// Get the Intermediate Language generator for the method.
ILGenerator^ myILGenerator = myMethodBuilder->GetILGenerator();
// Use the utility method to generate the IL instructions that print a String* to the console.
myILGenerator->EmitWriteLine( "Hello World!" );
// Generate the 'ret' IL instruction.
myILGenerator->Emit( OpCodes::Ret );
// End the creation of the type.
myTypeBuilder->CreateType();
// Set the method with name 'Main' as the entry point in the assembly.
myAssemblyBuilder->SetEntryPoint( myMethodBuilder );
myAssemblyBuilder->Save( fileName );
}
int main()
{
// Create a dynamic assembly with name 'MyAssembly' and build version '1.0.0.2001'.
AssemblyName^ myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "MyAssembly";
myAssemblyName->Version = gcnew Version( "1.0.0.2001" );
MakeAssembly( myAssemblyName, "MyAssembly.exe" );
// Get all the assemblies currently loaded in the application domain.
array<Assembly^>^myAssemblies = Thread::GetDomain()->GetAssemblies();
// Get the dynamic assembly named 'MyAssembly'.
Assembly^ myAssembly = nullptr;
for ( int i = 0; i < myAssemblies->Length; i++ )
{
if ( String::Compare( myAssemblies[ i ]->GetName()->Name, "MyAssembly" ) == 0 )
myAssembly = myAssemblies[ i ];
}
if ( myAssembly != nullptr )
{
Console::WriteLine( "\nDisplaying the assembly name\n" );
Console::WriteLine( myAssembly );
}
}
using System;
using System.Reflection;
using System.Threading;
using System.Reflection.Emit;
public class AssemblyName_Constructor
{
public static void MakeAssembly(AssemblyName myAssemblyName, string fileName)
{
// Get the assembly builder from the application domain associated with the current thread.
AssemblyBuilder myAssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
// Create a dynamic module in the assembly.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("MyModule", fileName);
// Create a type in the module.
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("MyType");
// Create a method called 'Main'.
MethodBuilder myMethodBuilder = myTypeBuilder.DefineMethod("Main", MethodAttributes.Public | MethodAttributes.HideBySig |
MethodAttributes.Static, typeof(void), null);
// Get the Intermediate Language generator for the method.
ILGenerator myILGenerator = myMethodBuilder.GetILGenerator();
// Use the utility method to generate the IL instructions that print a string to the console.
myILGenerator.EmitWriteLine("Hello World!");
// Generate the 'ret' IL instruction.
myILGenerator.Emit(OpCodes.Ret);
// End the creation of the type.
myTypeBuilder.CreateType();
// Set the method with name 'Main' as the entry point in the assembly.
myAssemblyBuilder.SetEntryPoint(myMethodBuilder);
myAssemblyBuilder.Save(fileName);
}
public static void Main()
{
// Create a dynamic assembly with name 'MyAssembly' and build version '1.0.0.2001'.
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "MyAssembly";
myAssemblyName.Version = new Version("1.0.0.2001");
MakeAssembly(myAssemblyName, "MyAssembly.exe");
// Get all the assemblies currently loaded in the application domain.
Assembly[] myAssemblies = Thread.GetDomain().GetAssemblies();
// Get the dynamic assembly named 'MyAssembly'.
Assembly myAssembly = null;
for(int i = 0; i < myAssemblies.Length; i++)
{
if(String.Compare(myAssemblies[i].GetName().Name, "MyAssembly") == 0)
myAssembly = myAssemblies[i];
}
if(myAssembly != null)
{
Console.WriteLine("\nDisplaying the assembly name\n");
Console.WriteLine(myAssembly);
}
}
}
Imports System.Reflection
Imports System.Threading
Imports System.Reflection.Emit
Public Class AssemblyName_Constructor
Public Shared Sub MakeAssembly(myAssemblyName As AssemblyName, fileName As String)
' Get the assembly builder from the application domain associated with the current thread.
Dim myAssemblyBuilder As AssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave)
' Create a dynamic module in the assembly.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule("MyModule", fileName)
' Create a type in the module.
Dim myTypeBuilder As TypeBuilder = myModuleBuilder.DefineType("MyType")
' Create a method called 'Main'.
Dim myMethodBuilder As MethodBuilder = myTypeBuilder.DefineMethod("Main", MethodAttributes.Public Or MethodAttributes.HideBySig Or MethodAttributes.Static, GetType(object), Nothing)
Dim myILGenerator As ILGenerator = myMethodBuilder.GetILGenerator()
' Use the utility method to generate the IL instructions that print a string to the console.
myILGenerator.EmitWriteLine("Hello World!")
' Generate the 'ret' IL instruction.
myILGenerator.Emit(OpCodes.Ret)
' End the creation of the type.
myTypeBuilder.CreateType()
' Set the method with name 'Main' as the entry point in the assembly.
myAssemblyBuilder.SetEntryPoint(myMethodBuilder)
myAssemblyBuilder.Save(fileName)
End Sub
Public Shared Sub Main()
' Create a dynamic assembly with name 'MyAssembly' and build version '1.0.0.2001'.
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "MyAssembly"
myAssemblyName.Version = New Version("1.0.0.2001")
MakeAssembly(myAssemblyName, "MyAssembly.exe")
' Get all the assemblies currently loaded in the application domain.
Dim myAssemblies As [Assembly]() = Thread.GetDomain().GetAssemblies()
' Get the dynamic assembly named 'MyAssembly'.
Dim myAssembly As [Assembly] = Nothing
Dim i As Integer
For i = 0 To myAssemblies.Length - 1
If [String].Compare(myAssemblies(i).GetName().Name, "MyAssembly") = 0 Then
myAssembly = myAssemblies(i)
End If
Next i
If Not (myAssembly Is Nothing) Then
Console.WriteLine(ControlChars.Cr + "Displaying the assembly name" + ControlChars.Cr)
Console.WriteLine(myAssembly)
End If
End Sub
End Class
Комментарии
Все компоненты версии должны быть целыми числами, превышающими или равными нулю. Метаданные ограничивают основной, дополнительный компонент, компоненты сборки и редакции для сборки максимальным значением UInt16.MaxValue - 1. Если компонент превышает это значение, ошибка не возникает. однако в динамической сборке этот компонент равен нулю.